\ No newline at end of file
diff --git a/portal-ui/build/static/css/165.ce92c9f5.chunk.css.map b/portal-ui/build/static/css/165.ce92c9f5.chunk.css.map
deleted file mode 100644
index ea0ca7567..000000000
--- a/portal-ui/build/static/css/165.ce92c9f5.chunk.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/css/165.ce92c9f5.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/165.ce92c9f5.chunk.css b/portal-ui/build/static/css/1990.7ecaf1e3.chunk.css
similarity index 96%
rename from portal-ui/build/static/css/165.ce92c9f5.chunk.css
rename to portal-ui/build/static/css/1990.7ecaf1e3.chunk.css
index c655998ab..f6aa6423a 100644
--- a/portal-ui/build/static/css/165.ce92c9f5.chunk.css
+++ b/portal-ui/build/static/css/1990.7ecaf1e3.chunk.css
@@ -1,2 +1,2 @@
.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
-/*# sourceMappingURL=165.ce92c9f5.chunk.css.map*/
\ No newline at end of file
+/*# sourceMappingURL=1990.7ecaf1e3.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/5673.ce92c9f5.chunk.css.map b/portal-ui/build/static/css/1990.7ecaf1e3.chunk.css.map
similarity index 97%
rename from portal-ui/build/static/css/5673.ce92c9f5.chunk.css.map
rename to portal-ui/build/static/css/1990.7ecaf1e3.chunk.css.map
index 355b409b9..55d2e1a8f 100644
--- a/portal-ui/build/static/css/5673.ce92c9f5.chunk.css.map
+++ b/portal-ui/build/static/css/1990.7ecaf1e3.chunk.css.map
@@ -1 +1 @@
-{"version":3,"file":"static/css/5673.ce92c9f5.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/css/1990.7ecaf1e3.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/5673.ce92c9f5.chunk.css b/portal-ui/build/static/css/3816.7ecaf1e3.chunk.css
similarity index 96%
rename from portal-ui/build/static/css/5673.ce92c9f5.chunk.css
rename to portal-ui/build/static/css/3816.7ecaf1e3.chunk.css
index 93bdd4d8e..9370c03da 100644
--- a/portal-ui/build/static/css/5673.ce92c9f5.chunk.css
+++ b/portal-ui/build/static/css/3816.7ecaf1e3.chunk.css
@@ -1,2 +1,2 @@
.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
-/*# sourceMappingURL=5673.ce92c9f5.chunk.css.map*/
\ No newline at end of file
+/*# sourceMappingURL=3816.7ecaf1e3.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/5677.ce92c9f5.chunk.css.map b/portal-ui/build/static/css/3816.7ecaf1e3.chunk.css.map
similarity index 97%
rename from portal-ui/build/static/css/5677.ce92c9f5.chunk.css.map
rename to portal-ui/build/static/css/3816.7ecaf1e3.chunk.css.map
index 86088bdaf..92d206a34 100644
--- a/portal-ui/build/static/css/5677.ce92c9f5.chunk.css.map
+++ b/portal-ui/build/static/css/3816.7ecaf1e3.chunk.css.map
@@ -1 +1 @@
-{"version":3,"file":"static/css/5677.ce92c9f5.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/css/3816.7ecaf1e3.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/4360.ce92c9f5.chunk.css b/portal-ui/build/static/css/4084.7ecaf1e3.chunk.css
similarity index 96%
rename from portal-ui/build/static/css/4360.ce92c9f5.chunk.css
rename to portal-ui/build/static/css/4084.7ecaf1e3.chunk.css
index 9113c102a..d77c57e3d 100644
--- a/portal-ui/build/static/css/4360.ce92c9f5.chunk.css
+++ b/portal-ui/build/static/css/4084.7ecaf1e3.chunk.css
@@ -1,2 +1,2 @@
.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
-/*# sourceMappingURL=4360.ce92c9f5.chunk.css.map*/
\ No newline at end of file
+/*# sourceMappingURL=4084.7ecaf1e3.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/6951.ce92c9f5.chunk.css.map b/portal-ui/build/static/css/4084.7ecaf1e3.chunk.css.map
similarity index 97%
rename from portal-ui/build/static/css/6951.ce92c9f5.chunk.css.map
rename to portal-ui/build/static/css/4084.7ecaf1e3.chunk.css.map
index 965f38f25..c505537e9 100644
--- a/portal-ui/build/static/css/6951.ce92c9f5.chunk.css.map
+++ b/portal-ui/build/static/css/4084.7ecaf1e3.chunk.css.map
@@ -1 +1 @@
-{"version":3,"file":"static/css/6951.ce92c9f5.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/css/4084.7ecaf1e3.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/5677.ce92c9f5.chunk.css b/portal-ui/build/static/css/5673.7ecaf1e3.chunk.css
similarity index 96%
rename from portal-ui/build/static/css/5677.ce92c9f5.chunk.css
rename to portal-ui/build/static/css/5673.7ecaf1e3.chunk.css
index ea0bf4e47..5d931d9bd 100644
--- a/portal-ui/build/static/css/5677.ce92c9f5.chunk.css
+++ b/portal-ui/build/static/css/5673.7ecaf1e3.chunk.css
@@ -1,2 +1,2 @@
.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
-/*# sourceMappingURL=5677.ce92c9f5.chunk.css.map*/
\ No newline at end of file
+/*# sourceMappingURL=5673.7ecaf1e3.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/4360.ce92c9f5.chunk.css.map b/portal-ui/build/static/css/5673.7ecaf1e3.chunk.css.map
similarity index 97%
rename from portal-ui/build/static/css/4360.ce92c9f5.chunk.css.map
rename to portal-ui/build/static/css/5673.7ecaf1e3.chunk.css.map
index 813e91543..0294467c1 100644
--- a/portal-ui/build/static/css/4360.ce92c9f5.chunk.css.map
+++ b/portal-ui/build/static/css/5673.7ecaf1e3.chunk.css.map
@@ -1 +1 @@
-{"version":3,"file":"static/css/4360.ce92c9f5.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/css/5673.7ecaf1e3.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/6951.ce92c9f5.chunk.css b/portal-ui/build/static/css/6951.ce92c9f5.chunk.css
deleted file mode 100644
index 3a1545aca..000000000
--- a/portal-ui/build/static/css/6951.ce92c9f5.chunk.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
-/*# sourceMappingURL=6951.ce92c9f5.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/8724.7ecaf1e3.chunk.css b/portal-ui/build/static/css/8724.7ecaf1e3.chunk.css
new file mode 100644
index 000000000..0b59d15ed
--- /dev/null
+++ b/portal-ui/build/static/css/8724.7ecaf1e3.chunk.css
@@ -0,0 +1,2 @@
+.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
+/*# sourceMappingURL=8724.7ecaf1e3.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/8724.7ecaf1e3.chunk.css.map b/portal-ui/build/static/css/8724.7ecaf1e3.chunk.css.map
new file mode 100644
index 000000000..efcb9b5ba
--- /dev/null
+++ b/portal-ui/build/static/css/8724.7ecaf1e3.chunk.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/css/8724.7ecaf1e3.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/8724.ce92c9f5.chunk.css b/portal-ui/build/static/css/8724.ce92c9f5.chunk.css
deleted file mode 100644
index 57533eabf..000000000
--- a/portal-ui/build/static/css/8724.ce92c9f5.chunk.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
-/*# sourceMappingURL=8724.ce92c9f5.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/8724.ce92c9f5.chunk.css.map b/portal-ui/build/static/css/8724.ce92c9f5.chunk.css.map
deleted file mode 100644
index 84aa07b2d..000000000
--- a/portal-ui/build/static/css/8724.ce92c9f5.chunk.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/css/8724.ce92c9f5.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9645.7ecaf1e3.chunk.css b/portal-ui/build/static/css/9645.7ecaf1e3.chunk.css
new file mode 100644
index 000000000..17b66274e
--- /dev/null
+++ b/portal-ui/build/static/css/9645.7ecaf1e3.chunk.css
@@ -0,0 +1,2 @@
+.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
+/*# sourceMappingURL=9645.7ecaf1e3.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9645.7ecaf1e3.chunk.css.map b/portal-ui/build/static/css/9645.7ecaf1e3.chunk.css.map
new file mode 100644
index 000000000..37cc76c26
--- /dev/null
+++ b/portal-ui/build/static/css/9645.7ecaf1e3.chunk.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/css/9645.7ecaf1e3.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9807.7ecaf1e3.chunk.css b/portal-ui/build/static/css/9807.7ecaf1e3.chunk.css
new file mode 100644
index 000000000..c9cbaee8a
--- /dev/null
+++ b/portal-ui/build/static/css/9807.7ecaf1e3.chunk.css
@@ -0,0 +1,2 @@
+.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
+/*# sourceMappingURL=9807.7ecaf1e3.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9807.7ecaf1e3.chunk.css.map b/portal-ui/build/static/css/9807.7ecaf1e3.chunk.css.map
new file mode 100644
index 000000000..d39f01b95
--- /dev/null
+++ b/portal-ui/build/static/css/9807.7ecaf1e3.chunk.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/css/9807.7ecaf1e3.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9807.ce92c9f5.chunk.css b/portal-ui/build/static/css/9807.ce92c9f5.chunk.css
deleted file mode 100644
index ecf71d413..000000000
--- a/portal-ui/build/static/css/9807.ce92c9f5.chunk.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
-/*# sourceMappingURL=9807.ce92c9f5.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9807.ce92c9f5.chunk.css.map b/portal-ui/build/static/css/9807.ce92c9f5.chunk.css.map
deleted file mode 100644
index 052749796..000000000
--- a/portal-ui/build/static/css/9807.ce92c9f5.chunk.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/css/9807.ce92c9f5.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1056.6f1cb8e0.chunk.js b/portal-ui/build/static/js/1056.6f1cb8e0.chunk.js
deleted file mode 100644
index 41457b9f0..000000000
--- a/portal-ui/build/static/js/1056.6f1cb8e0.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1056],{29316:function(e,t,n){n(50390);var a=n(6369),r=n(86509),i=n(4285),s=n(11387),o=n(62559);t.Z=(0,i.Z)((function(e){return(0,r.Z)({link:{display:"flex",alignItems:"center",textDecoration:"none",maxWidth:"300px",padding:"2rem 2rem 0rem 2rem",color:e.palette.primary.light,fontSize:".8rem","&:hover":{textDecoration:"underline"}},icon:{marginRight:".3rem",display:"flex",alignItems:"center",justifyContent:"center","& svg.min-icon":{width:12}}})}))((function(e){var t=e.to,n=e.label,r=e.classes,i=e.className,l=e.executeOnClick;return(0,o.jsxs)(a.rU,{to:t,className:"".concat(r.link," ").concat(i||""),onClick:function(){l&&l()},children:[(0,o.jsx)("div",{className:r.icon,children:(0,o.jsx)(s.xN,{})}),(0,o.jsx)("div",{className:r.label,children:n})]})}))},70758:function(e,t,n){var a=n(18489),r=n(36222),i=n(83738),s=(n(50390),n(86509)),o=n(4285),l=n(95467),c=n(94187),u=n(44977),d=n(62559),m=["classes","children","variant","tooltip"];t.Z=(0,o.Z)((function(e){return(0,s.Z)({root:{padding:8,marginLeft:8,borderWidth:1,borderColor:"#696969",color:"#696969",borderStyle:"solid",borderRadius:3,"& .min-icon":{width:20},"& .MuiTouchRipple-root span":{backgroundColor:e.palette.primary.main,borderRadius:3,opacity:.3},"&:disabled":{color:"#EBEBEB",borderColor:"#EBEBEB"}},contained:{borderColor:e.palette.primary.main,background:e.palette.primary.main,color:"white","& .MuiTouchRipple-root span":{backgroundColor:e.palette.primary.dark,borderRadius:3,opacity:.3},"&:hover":{backgroundColor:e.palette.primary.light,color:"#FFF"}}})}))((function(e){var t=e.classes,n=e.children,s=e.variant,o=void 0===s?"outlined":s,p=e.tooltip,g=(0,i.Z)(e,m),f=(0,d.jsx)(l.Z,(0,a.Z)((0,a.Z)({},g),{},{className:(0,u.Z)(t.root,(0,r.Z)({},t.contained,"contained"===o)),children:n}));return p&&""!==p?(0,d.jsx)(c.Z,{title:p,children:(0,d.jsx)("span",{children:f})}):f}))},39080:function(e,t,n){n.r(t),n.d(t,{default:function(){return Z}});var a=n(18489),r=n(35531),i=n(50390),s=n(38342),o=n.n(s),l=n(86509),c=n(4285),u=n(66946),d=n(76352),m=n(25594),p=n(58217),g=n(65771),f=n(70758),h=n(33034),x=n.n(h),v=n(11387),y=n(72462),C=n(62559),S=(0,c.Z)((function(e){return(0,l.Z)({container:{display:"flex",flexFlow:"column",padding:"20px 0 8px 0"},inputWithCopy:{"& .MuiInputBase-root ":{width:"100%",background:"#FBFAFA","& .MuiInputBase-input":{height:".8rem"},"& .MuiInputAdornment-positionEnd":{marginRight:".5rem","& .MuiButtonBase-root":{height:"2rem"}}},"& .MuiButtonBase-root .min-icon":{width:".8rem",height:".8rem"}},inputLabel:(0,a.Z)((0,a.Z)({},y.YI.inputLabel),{},{fontSize:".8rem"})})}))((function(e){var t=e.label,n=void 0===t?"":t,a=e.value,r=void 0===a?"":a,i=e.classes,s=void 0===i?{}:i;return(0,C.jsxs)("div",{className:s.container,children:[(0,C.jsxs)("div",{className:s.inputLabel,children:[n,":"]}),(0,C.jsx)("div",{className:s.inputWithCopy,children:(0,C.jsx)(p.Z,{value:r,readOnly:!0,endAdornment:(0,C.jsx)(g.Z,{position:"end",children:(0,C.jsx)(x(),{text:r,children:(0,C.jsx)(f.Z,{"aria-label":"copy",tooltip:"Copy",onClick:function(){},onMouseDown:function(){},edge:"end",children:(0,C.jsx)(v.TI,{})})})})})})]})})),j=n(47424),Z=(0,c.Z)((function(e){return(0,l.Z)({warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}},credentialTitle:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},buttonContainer:{textAlign:"right",marginTop:"1rem"},credentialsPanel:{overflowY:"auto",maxHeight:350},promptTitle:{display:"flex",alignItems:"center"},buttonSpacer:{marginRight:".9rem"},promptIcon:{marginRight:".1rem",display:"flex",alignItems:"center",height:"2rem",width:"2rem"}})}))((function(e){var t=e.classes,n=e.newServiceAccount,s=e.open,l=e.closeModal,c=e.entity;if(!n)return null;var p=o()(n,"console",null),g=o()(n,"idp",!1);return(0,C.jsx)(d.Z,{modalOpen:s,onClose:function(){l()},title:(0,C.jsx)("div",{className:t.promptTitle,children:(0,C.jsxs)("div",{children:["New ",c," Created"]})}),titleIcon:(0,C.jsx)(v.tV,{}),children:(0,C.jsxs)(m.ZP,{container:!0,children:[(0,C.jsxs)(m.ZP,{item:!0,xs:12,className:t.formScrollable,children:["A new ",c," has been created with the following details:",!g&&p&&(0,C.jsx)(i.Fragment,{children:(0,C.jsxs)(m.ZP,{item:!0,xs:12,className:t.credentialsPanel,children:[(0,C.jsx)("div",{className:t.credentialTitle,children:"Console Credentials"}),Array.isArray(p)&&p.map((function(e,t){return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(S,{label:"Access Key",value:e.accessKey}),(0,C.jsx)(S,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(p)&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(S,{label:"Access Key",value:p.accessKey}),(0,C.jsx)(S,{label:"Secret Key",value:p.secretKey})]})]})}),g?(0,C.jsx)("div",{className:t.warningBlock,children:"Please Login via the configured external identity provider."}):(0,C.jsxs)("div",{className:t.warningBlock,children:[(0,C.jsx)(j.Z,{}),(0,C.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,C.jsxs)(m.ZP,{item:!0,xs:12,className:t.buttonContainer,children:[(0,C.jsx)(u.Z,{variant:"outlined",className:t.buttonSpacer,onClick:function(){l()},color:"primary",children:"Done"}),!g&&(0,C.jsx)(u.Z,{onClick:function(){var e={};if(p)if(Array.isArray(p)){var t=p.map((function(e){return{access_key:e.accessKey,secret_key:e.secretKey}}));e={console:(0,r.Z)(t)}}else e={console:[{access_key:p.accessKey,secret_key:p.secretKey}]};!function(e,t){var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)}("credentials.json",JSON.stringify((0,a.Z)({},e)))},endIcon:(0,C.jsx)(v._8,{}),variant:"contained",color:"primary",children:"Download"})]})]})})}))},82461:function(e,t,n){n.d(t,{Z:function(){return C}});var a=n(23430),r=n(18489),i=n(50390),s=n(38342),o=n.n(s),l=n(25594),c=n(14602),u=n(94187),d=n(95467),m=n(46529),p=n(94258),g=n(86509),f=n(4285),h=n(72462),x=n(97538),v=n(82981),y=n(62559),C=(0,f.Z)((function(e){return(0,g.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},h.YI),h.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},h.bV),{},{inputLabel:(0,r.Z)((0,r.Z)({},h.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,r.Z)((0,r.Z)({},h.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var t=e.label,n=e.classes,r=e.onChange,s=e.id,g=e.name,f=e.disabled,h=void 0!==f&&f,C=e.tooltip,S=void 0===C?"":C,j=e.required,Z=e.error,b=void 0===Z?"":Z,_=e.accept,P=void 0===_?"":_,N=e.value,I=void 0===N?"":N,A=(0,i.useState)(!1),T=(0,a.Z)(A,2),k=T[0],R=T[1];return(0,y.jsx)(i.Fragment,{children:(0,y.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(n.fileInputField," ").concat(n.fieldBottom," ").concat(n.fieldContainer," ").concat(""!==b?n.errorInField:""),children:[""!==t&&(0,y.jsxs)(c.Z,{htmlFor:s,className:"".concat(""!==b?n.fieldLabelError:""," ").concat(n.inputLabel),children:[(0,y.jsxs)("span",{children:[t,j?"*":""]}),""!==S&&(0,y.jsx)("div",{className:n.tooltipContainer,children:(0,y.jsx)(u.Z,{title:S,placement:"top-start",children:(0,y.jsx)("div",{className:n.tooltip,children:(0,y.jsx)(x.Z,{})})})})]}),k||""===I?(0,y.jsxs)("div",{className:n.textBoxContainer,children:[(0,y.jsx)("input",{type:"file",name:g,onChange:function(e){var t=o()(e,"target.files[0].name","");!function(e,t){var n=e.target.files[0],a=new FileReader;a.readAsDataURL(n),a.onload=function(){var e=a.result;if(e){var n=e.toString().split("base64,");2===n.length&&t(n[1])}}}(e,(function(e){r(e,t)}))},accept:P,required:j,disabled:h,className:n.fileInputField}),""!==I&&(0,y.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){R(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(p.Z,{})}),""!==b&&(0,y.jsx)(v.Z,{errorMessage:b})]}):(0,y.jsxs)("div",{className:n.fileReselect,children:[(0,y.jsx)("div",{className:n.valueString,children:I}),(0,y.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){R(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(m.Z,{})})]})]})})}))},27207:function(e,t,n){var a=n(36222),r=n(18489),i=(n(50390),n(44977)),s=n(25594),o=n(82420),l=n(66695),c=n(98893),u=n(14602),d=n(94187),m=n(86509),p=n(4285),g=n(62449),f=n(72462),h=n(97538),x=n(62559),v=(0,g.Z)((0,r.Z)({root:{"&:hover":{backgroundColor:"transparent"}}},f.FU)),y=function(e){var t=v();return(0,x.jsx)(c.Z,(0,r.Z)({className:t.root,disableRipple:!0,color:"default",checkedIcon:(0,x.jsx)("span",{className:t.radioSelectedIcon}),icon:(0,x.jsx)("span",{className:t.radioUnselectedIcon})},e))};t.Z=(0,p.Z)((function(e){return(0,m.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},f.YI),f.Hr),{},{optionLabel:{"&.Mui-disabled":{"& .MuiFormControlLabel-label":{color:"#9c9c9c"}},"&:last-child":{marginRight:0},"& .MuiFormControlLabel-label":{fontSize:12,color:"#07193E"}},checkedOption:{"& .MuiFormControlLabel-label":{fontSize:12,color:"#07193E",fontWeight:700}}}))}))((function(e){var t=e.selectorOptions,n=void 0===t?[]:t,r=e.currentSelection,c=e.label,m=e.id,p=e.name,g=e.onChange,f=e.tooltip,v=void 0===f?"":f,C=e.disableOptions,S=void 0!==C&&C,j=e.classes,Z=e.displayInColumn,b=void 0!==Z&&Z;return(0,x.jsxs)(s.ZP,{container:!0,alignItems:"center",children:[(0,x.jsx)(s.ZP,{item:!0,xs:!0,children:(0,x.jsxs)(u.Z,{htmlFor:m,className:j.inputLabel,children:[(0,x.jsx)("span",{children:c}),""!==v&&(0,x.jsx)("div",{className:j.tooltipContainer,children:(0,x.jsx)(d.Z,{title:v,placement:"top-start",children:(0,x.jsx)("div",{children:(0,x.jsx)(h.Z,{})})})})]})}),(0,x.jsx)(s.ZP,{item:!0,xs:!0,className:j.radioOptionsLayout,children:(0,x.jsx)(o.Z,{"aria-label":m,id:m,name:p,value:r,onChange:g,row:!b,style:{display:"block",textAlign:"right"},children:n.map((function(e){return(0,x.jsx)(l.Z,{value:e.value,control:(0,x.jsx)(y,{}),label:e.label,disabled:S,className:(0,i.Z)(j.optionLabel,(0,a.Z)({},j.checkedOption,e.value===r))},"rd-".concat(p,"-").concat(e.value))}))})})]})}))},67754:function(e,t,n){var a=n(18489),r=n(50390),i=n(25594),s=n(46413),o=n(14602),l=n(94187),c=n(47554),u=n(43965),d=n(31680),m=n(86509),p=n(4285),g=n(72462),f=n(97538),h=n(62559),x=(0,p.Z)((function(e){return(0,m.Z)({root:{height:38,lineHeight:1,"label + &":{marginTop:e.spacing(3)}},input:{height:38,position:"relative",color:"#07193E",fontSize:13,fontWeight:600,padding:"8px 20px 10px 10px",border:"#e5e5e5 1px solid",borderRadius:4,display:"flex",alignItems:"center","&:hover":{borderColor:"#393939"},"&:focus":{backgroundColor:"#fff"}}})}))(s.ZP);t.Z=(0,p.Z)((function(e){return(0,m.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},g.YI),g.Hr),{},{inputLabel:(0,a.Z)((0,a.Z)({},g.YI.inputLabel),{},{"& span":{fontWeight:"normal"}}),fieldContainer:{display:"flex","@media (max-width: 600px)":{flexFlow:"column"}}}))}))((function(e){var t=e.classes,n=e.id,a=e.name,s=e.onChange,m=e.options,p=e.label,g=e.tooltip,v=void 0===g?"":g,y=e.value,C=e.disabled,S=void 0!==C&&C;return(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(i.ZP,{item:!0,xs:12,className:t.fieldContainer,children:[""!==p&&(0,h.jsxs)(o.Z,{htmlFor:n,className:t.inputLabel,children:[(0,h.jsx)("span",{children:p}),""!==v&&(0,h.jsx)("div",{className:t.tooltipContainer,children:(0,h.jsx)(l.Z,{title:v,placement:"top-start",children:(0,h.jsx)("div",{className:t.tooltip,children:(0,h.jsx)(f.Z,{})})})})]}),(0,h.jsx)(c.Z,{fullWidth:!0,children:(0,h.jsx)(u.Z,{id:n,name:a,value:y,onChange:s,input:(0,h.jsx)(x,{}),disabled:S,children:m.map((function(e){return(0,h.jsx)(d.Z,{value:e.value,children:e.label},"select-".concat(a,"-").concat(e.label))}))})})]})})}))},76295:function(e,t,n){n.d(t,{Z:function(){return f}});var a=n(23430),r=n(50390),i=n(86509),s=n(4285),o=n(81378),l=n(66946),c=n(62559),u=(0,s.Z)((function(e){return(0,i.Z)({wizardStepContainer:{display:"flex",flexDirection:"column",flex:1},wizardComponent:{overflowY:"auto",marginBottom:10,height:"calc(100vh - 100px - 80px)",minHeight:400,flex:1,width:"100%"},wizardModal:{overflowY:"auto",marginBottom:10,height:"calc(100vh - 515px)"},buttonsContainer:{display:"flex",flexDirection:"row",justifyContent:"flex-start",padding:"10px 0",borderTop:"#EAEAEA 1px solid","& button":{marginLeft:10},"&.forModal":{paddingBottom:0}},buttonInnerContainer:{width:"100%",textAlign:"right",marginRight:15}})}))((function(e){var t=e.classes,n=e.page,a=e.pageChange,r=e.loadingStep,i=e.forModal;return(0,c.jsxs)("div",{className:t.wizardStepContainer,children:[(0,c.jsx)("div",{className:i?t.wizardModal:t.wizardComponent,children:n.componentRender}),r&&(0,c.jsx)("div",{children:(0,c.jsx)(o.Z,{})}),(0,c.jsx)("div",{className:"".concat(t.buttonsContainer," ").concat(i?"forModal":""),children:(0,c.jsx)("div",{className:t.buttonInnerContainer,children:n.buttons.map((function(e){return(0,c.jsx)(l.Z,{variant:"contained",color:"primary",size:"small",onClick:function(){!function(e){switch(e.type){case"next":a("++");break;case"back":a("--");break;case"to":a(e.toPage||0)}e.action&&e.action(a)}(e)},disabled:!e.enabled,children:e.label},"button-".concat(n.label,"-").concat(e.label))}))})})]})})),d=n(5211),m=n(25594),p=n(14291),g=n(70902),f=(0,s.Z)((function(e){return(0,i.Z)({wizFromContainer:{},wizFromModal:{position:"relative"},modalWizardSteps:{padding:5,borderBottom:"#eaeaea 1px solid","& ul":{padding:0,marginTop:0,display:"flex",justifyContent:"space-evenly","& li":{listStyle:"lower-roman","&::marker":{paddingLeft:15}}}},buttonList:{backgroundColor:"transparent",border:"none",cursor:"pointer","&:not(:disabled):hover":{textDecoration:"underline"},"&:selected, &:active, &:focus, &:focus:active":{border:"none",outline:0,boxShadow:"none"}},paddedContentGrid:{marginTop:8,padding:"0 10px",minHeight:400},stepsLabel:{fontSize:20,color:"#393939",fontWeight:600,margin:"15px 12px","&.stepsModalTitle":{textAlign:"center",width:"100%",marginTop:0,marginBottom:10}},stepsMasterContainer:{position:"sticky",top:0,backgroundColor:"#FFFFFF",width:"100%",maxHeight:90},verticalSteps:{borderRight:"1px solid #E5E5E5",background:"#F8F8F8"},stepsContainer:{paddingTop:0,"& .MuiButtonBase-root.Mui-selected":{background:"#E5E5E5"}},stepItem:{minHeight:60,borderBottom:"1px solid #E5E5E5","&:hover":{background:"rgba(247,247,247,0.7)"}}})}))((function(e){var t=e.classes,n=e.wizardSteps,i=e.loadingStep,s=e.forModal,o=(0,r.useState)(0),l=(0,a.Z)(o,2),f=l[0],h=l[1],x=function(e){var t=n.length-1;if("++"===e){var a=f+1;a>t&&(a=t),h(a)}if("--"===e){var r=f-1;r<0&&(r=0),h(r)}if("number"===typeof e){var i=e;e<0&&(i=0),e>t&&(i=t),h(i)}};if(0===n.length)return null;return(0,c.jsxs)(m.ZP,{container:!0,className:s?t.wizFromModal:t.wizFromContainer,children:[s?(0,c.jsx)(r.Fragment,{children:(0,c.jsxs)("div",{className:t.stepsMasterContainer,children:[(0,c.jsx)("div",{className:"".concat(t.stepsLabel," stepsModalTitle"),children:"Steps"}),(0,c.jsx)("div",{className:t.modalWizardSteps,children:(0,c.jsx)("ul",{children:n.map((function(e,n){return(0,c.jsx)("li",{children:(0,c.jsx)("button",{onClick:function(){return x(n)},disabled:n>f,className:t.buttonList,children:e.label})},"wizard-".concat(n.toString()))}))})})]})}):(0,c.jsx)(r.Fragment,{children:(0,c.jsx)(m.ZP,{item:!0,xs:12,sm:2,md:2,lg:2,xl:2,className:t.verticalSteps,children:(0,c.jsx)(r.Fragment,{children:(0,c.jsx)(d.Z,{component:"nav",dense:!0,classes:{root:t.stepsContainer},children:n.map((function(e,n){return(0,c.jsx)(p.ZP,{button:!0,disableRipple:!0,onClick:function(){return x(n)},selected:f===n,classes:{root:t.stepItem},children:(0,c.jsx)(g.Z,{primary:e.label})},"wizard-".concat(n.toString()))}))})})})}),(0,c.jsx)(m.ZP,{item:!0,xs:12,sm:s?12:10,md:s?12:10,lg:s?12:10,xl:s?12:10,className:s?"":t.paddedContentGrid,children:(0,c.jsx)(u,{page:n[f],pageChange:x,loadingStep:i,forModal:s})})]})}))},25534:function(e,t,n){var a=n(18489),r=(n(50390),n(25594)),i=n(86509),s=n(4285),o=n(72462),l=n(62559);t.Z=(0,s.Z)((function(e){return(0,i.Z)((0,a.Z)({},o.Bw))}))((function(e){var t=e.classes,n=e.className,a=void 0===n?"":n,i=e.children;return(0,l.jsx)("div",{className:t.contentSpacer,children:(0,l.jsx)(r.ZP,{container:!0,children:(0,l.jsx)(r.ZP,{item:!0,xs:12,className:a,children:i})})})}))},35721:function(e,t,n){n(50390);var a=n(34424),r=n(25594),i=n(86509),s=n(4285),o=n(35477),l=n(95467),c=n(26805),u=n(44078),d=n(5265),m=n(11387),p=n(62559),g={toggleList:d.kQ},f=(0,a.$j)((function(e){return{sidebarOpen:e.system.sidebarOpen,operatorMode:e.system.operatorMode,managerObjects:e.objectBrowser.objectManager.objectsToManage}}),g);t.Z=f((0,s.Z)((function(e){return(0,i.Z)({headerContainer:{width:"100%",minHeight:79,display:"flex",backgroundColor:"#fff",left:0,boxShadow:"rgba(0,0,0,.08) 0 3px 10px"},label:{display:"flex",justifyContent:"flex-start",alignItems:"center"},labelStyle:{color:"#000",fontSize:18,fontWeight:700,marginLeft:34,marginTop:8},rightMenu:{textAlign:"right"},logo:{marginLeft:34,fill:e.palette.primary.main,"& .min-icon":{width:120}},middleComponent:{display:"flex",justifyContent:"center",alignItems:"center"}})}))((function(e){var t=e.classes,n=e.label,a=e.actions,i=e.sidebarOpen,s=e.operatorMode,d=e.managerObjects,g=e.toggleList,f=e.middleComponent;return(0,p.jsxs)(r.ZP,{container:!0,className:"".concat(t.headerContainer," page-header"),direction:"row",alignItems:"center",children:[(0,p.jsxs)(r.ZP,{item:!0,xs:12,sm:12,md:f?3:6,className:t.label,sx:{paddingTop:["15px","15px","0","0"]},children:[!i&&(0,p.jsx)("div",{className:t.logo,children:s?(0,p.jsx)(c.Z,{}):(0,p.jsx)(u.Z,{})}),(0,p.jsx)(o.Z,{variant:"h4",className:t.labelStyle,children:n})]}),f&&(0,p.jsx)(r.ZP,{item:!0,xs:12,sm:12,md:6,className:t.middleComponent,sx:{marginTop:["10px","10px","0","0"]},children:f}),(0,p.jsxs)(r.ZP,{item:!0,xs:12,sm:12,md:f?3:6,className:t.rightMenu,children:[a&&a,d&&d.length>0&&(0,p.jsx)(l.Z,{color:"primary","aria-label":"Refresh List",component:"span",onClick:function(){g()},size:"large",children:(0,p.jsx)(m.gx,{})})]})]})})))},1056:function(e,t,n){n.r(t),n.d(t,{default:function(){return ze}});var a,r,i=n(23430),s=n(18489),o=n(50390),l=n(38342),c=n.n(l),u=n(34424),d=n(25594),m=n(81378),p=n(86509),g=n(4285),f=n(72462),h=n(30324),x=n(28948),v=n(76295),y=n(44149),C=n(93127),S=n(39080),j=n(46864),Z=n(35531),b=n(46981),_=n(10369),P=n(84201),N=n(92440),I=n(66964),A=n(67754),T=n(62559),k=(0,u.$j)((function(e){return{storageClasses:e.tenants.createTenant.storageClasses,customImage:e.tenants.createTenant.fields.configure.customImage,imageName:e.tenants.createTenant.fields.configure.imageName,customDockerhub:e.tenants.createTenant.fields.configure.customDockerhub,imageRegistry:e.tenants.createTenant.fields.configure.imageRegistry,imageRegistryUsername:e.tenants.createTenant.fields.configure.imageRegistryUsername,imageRegistryPassword:e.tenants.createTenant.fields.configure.imageRegistryPassword,exposeMinIO:e.tenants.createTenant.fields.configure.exposeMinIO,exposeConsole:e.tenants.createTenant.fields.configure.exposeConsole,prometheusCustom:e.tenants.createTenant.fields.configure.prometheusCustom,tenantCustom:e.tenants.createTenant.fields.configure.tenantCustom,logSearchCustom:e.tenants.createTenant.fields.configure.logSearchCustom,logSearchVolumeSize:e.tenants.createTenant.fields.configure.logSearchVolumeSize,logSearchSizeFactor:e.tenants.createTenant.fields.configure.logSearchSizeFactor,prometheusVolumeSize:e.tenants.createTenant.fields.configure.prometheusVolumeSize,prometheusSizeFactor:e.tenants.createTenant.fields.configure.prometheusSizeFactor,logSearchSelectedStorageClass:e.tenants.createTenant.fields.configure.logSearchSelectedStorageClass,logSearchImage:e.tenants.createTenant.fields.configure.logSearchImage,kesImage:e.tenants.createTenant.fields.configure.kesImage,logSearchPostgresImage:e.tenants.createTenant.fields.configure.logSearchPostgresImage,logSearchPostgresInitImage:e.tenants.createTenant.fields.configure.logSearchPostgresInitImage,prometheusSelectedStorageClass:e.tenants.createTenant.fields.configure.prometheusSelectedStorageClass,prometheusImage:e.tenants.createTenant.fields.configure.prometheusImage,prometheusSidecarImage:e.tenants.createTenant.fields.configure.prometheusSidecarImage,prometheusInitImage:e.tenants.createTenant.fields.configure.prometheusInitImage,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,tenantSecurityContext:e.tenants.createTenant.fields.configure.tenantSecurityContext,logSearchSecurityContext:e.tenants.createTenant.fields.configure.logSearchSecurityContext,logSearchPostgresSecurityContext:e.tenants.createTenant.fields.configure.logSearchPostgresSecurityContext,prometheusSecurityContext:e.tenants.createTenant.fields.configure.prometheusSecurityContext}}),{updateAddField:j.HM,isPageValid:j.NO}),R=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)({configSectionItem:{marginRight:15,"& .multiContainer":{border:"1px solid red"}},tenantCustomizationFields:{marginLeft:30,width:"88%",margin:"auto"},containerItem:{marginRight:15},fieldGroup:(0,s.Z)((0,s.Z)({},f.QV.fieldGroup),{},{paddingTop:15,marginBottom:25}),responsiveSectionItem:{"@media (max-width: 900px)":{flexFlow:"column",alignItems:"flex-start","& div > div":{marginBottom:5,marginRight:0}}},logSearchCustomFields:{marginLeft:20,padding:10,width:"90%",margin:"auto"},fieldSpaceTop:{marginTop:15},prometheusCustomFields:{marginLeft:20,padding:10,width:"90%",margin:"auto"}},f.oO),f.AK))}))(k((function(e){var t=e.classes,n=e.storageClasses,a=e.customImage,r=e.imageName,l=e.customDockerhub,c=e.imageRegistry,u=e.imageRegistryUsername,m=e.imageRegistryPassword,p=e.exposeMinIO,g=e.exposeConsole,f=e.prometheusCustom,h=e.tenantCustom,x=e.logSearchCustom,v=e.logSearchVolumeSize,y=(e.logSearchSizeFactor,e.logSearchImage),C=e.kesImage,S=e.logSearchPostgresImage,j=e.logSearchPostgresInitImage,k=e.prometheusVolumeSize,R=(e.prometheusSizeFactor,e.logSearchSelectedStorageClass),z=e.prometheusSelectedStorageClass,w=e.prometheusImage,F=e.prometheusSidecarImage,D=e.prometheusInitImage,E=e.updateAddField,U=e.isPageValid,K=e.selectedStorageClass,L=e.tenantSecurityContext,M=e.logSearchSecurityContext,q=e.logSearchPostgresSecurityContext,G=e.prometheusSecurityContext,V=(0,o.useState)({}),O=(0,i.Z)(V,2),B=O[0],$=O[1],W=[{label:"Default",value:"default"}].concat((0,Z.Z)(n)),H=(0,o.useCallback)((function(e,t){E("configure",e,t)}),[E]);(0,o.useEffect)((function(){var e=[];h&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"tenant_securityContext_runAsUser",required:!0,value:L.runAsUser,customValidation:""===L.runAsUser||parseInt(L.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"tenant_securityContext_runAsGroup",required:!0,value:L.runAsGroup,customValidation:""===L.runAsGroup||parseInt(L.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"tenant_securityContext_fsGroup",required:!0,value:L.fsGroup,customValidation:""===L.fsGroup||parseInt(L.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"prometheus_storage_class",required:!0,value:z,customValidation:""===z,customValidationMessage:"Field cannot be empty"},{fieldKey:"prometheus_volume_size",required:!0,value:k,customValidation:""===k||parseInt(k)<=0,customValidationMessage:"Volume size must be present and be greater than 0"},{fieldKey:"prometheus_securityContext_runAsUser",required:!0,value:G.runAsUser,customValidation:""===G.runAsUser||parseInt(G.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"prometheus_securityContext_runAsGroup",required:!0,value:G.runAsGroup,customValidation:""===G.runAsGroup||parseInt(G.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"prometheus_securityContext_fsGroup",required:!0,value:G.fsGroup,customValidation:""===G.fsGroup||parseInt(G.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),x&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"log_search_storage_class",required:!0,value:R,customValidation:""===R,customValidationMessage:"Field cannot be empty"},{fieldKey:"log_search_volume_size",required:!0,value:v,customValidation:""===v||parseInt(v)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"},{fieldKey:"logSearch_securityContext_runAsUser",required:!0,value:M.runAsUser,customValidation:""===M.runAsUser||parseInt(M.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"logSearch_securityContext_runAsGroup",required:!0,value:M.runAsGroup,customValidation:""===M.runAsGroup||parseInt(M.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"logSearch_securityContext_fsGroup",required:!0,value:M.fsGroup,customValidation:""===M.fsGroup||parseInt(M.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"},{fieldKey:"postgres_securityContext_runAsUser",required:!0,value:q.runAsUser,customValidation:""===q.runAsUser||parseInt(q.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"postgres_securityContext_runAsGroup",required:!0,value:G.runAsGroup,customValidation:""===q.runAsGroup||parseInt(q.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"postgres_securityContext_fsGroup",required:!0,value:q.fsGroup,customValidation:""===q.fsGroup||parseInt(q.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),a&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"image",required:!1,value:r,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/minio:VERSION'"},{fieldKey:"logSearchImage",required:!1,value:y,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/logsearchapi:VERSION'"},{fieldKey:"kesImage",required:!1,value:C,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/kes:VERSION'"},{fieldKey:"logSearchPostgresImage",required:!1,value:S,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/postgres:VERSION'"},{fieldKey:"logSearchPostgresInitImage",required:!1,value:j,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"},{fieldKey:"prometheusImage",required:!1,value:w,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/prometheus:VERSION'"},{fieldKey:"prometheusSidecarImage",required:!1,value:F,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'project/container:VERSION'"},{fieldKey:"prometheusInitImage",required:!1,value:D,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"}]),l&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"registry",required:!0,value:c},{fieldKey:"registryUsername",required:!0,value:u},{fieldKey:"registryPassword",required:!0,value:m}])));var t=(0,P.R)(e);U("configure",0===Object.keys(t).length),$(t)}),[a,r,y,C,S,j,w,F,D,l,c,u,m,U,f,h,x,z,k,R,v,L,M,q,G]),(0,o.useEffect)((function(){n.length>0&&(0===n.filter((function(e){return e.value===z})).length&&H("prometheusSelectedStorageClass","default"),0===n.filter((function(e){return e.value===R})).length&&H("logSearchSelectedStorageClass","default"))}),[R,z,K,n,H]);var Y=function(e){$((0,_.h)(B,e))};return(0,T.jsxs)(b.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Configure"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Basic configurations for tenant management"})]}),(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Expose Services"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Whether the tenant's services should request an external IP."})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"expose_minio",id:"expose_minio",name:"expose_minio",checked:p,onChange:function(e){var t=e.target.checked;H("exposeMinIO",t)},label:"Expose MiniO Service"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"expose_console",id:"expose_console",name:"expose_console",checked:g,onChange:function(e){var t=e.target.checked;H("exposeConsole",t)},label:"Expose Console Service"})}),(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Additional Configurations"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Configure SecurityContext, Storage Classes & Storage size for Log Search, Prometheus add-ons and your Tenant"})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"tenantConfig",id:"tenant_configuration",name:"tenant_configuration",checked:h,onChange:function(e){var t=e.target.checked;H("tenantCustom",t)},label:"Override Tenant defaults"})}),h&&(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.tenantCustomizationFields,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for MinIO"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:"".concat(t.configSectionItem),children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,T.jsx)("div",{className:t.containerItem,children:(0,T.jsx)(I.Z,{type:"number",id:"tenant_securityContext_runAsUser",name:"tenant_securityContext_runAsUser",onChange:function(e){H("tenantSecurityContext",(0,s.Z)((0,s.Z)({},L),{},{runAsUser:e.target.value})),Y("tenant_securityContext_runAsUser")},label:"Run As User",value:L.runAsUser,required:!0,error:B.tenant_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:t.containerItem,children:(0,T.jsx)(I.Z,{type:"number",id:"tenant_securityContext_runAsGroup",name:"tenant_securityContext_runAsGroup",onChange:function(e){H("tenantSecurityContext",(0,s.Z)((0,s.Z)({},L),{},{runAsGroup:e.target.value})),Y("tenant_securityContext_runAsGroup")},label:"Run As Group",value:L.runAsGroup,required:!0,error:B.tenant_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:t.containerItem,children:(0,T.jsx)(I.Z,{type:"number",id:"tenant_securityContext_fsGroup",name:"tenant_securityContext_fsGroup",onChange:function(e){H("tenantSecurityContext",(0,s.Z)((0,s.Z)({},L),{},{fsGroup:e.target.value})),Y("tenant_securityContext_fsGroup")},label:"FsGroup",value:L.fsGroup,required:!0,error:B.tenant_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(N.Z,{value:"tenantSecurityContextRunAsNonRoot",id:"tenant_securityContext_runAsNonRoot",name:"tenant_securityContext_runAsNonRoot",checked:L.runAsNonRoot,onChange:function(e){var t=e.target.checked;H("tenantSecurityContext",(0,s.Z)((0,s.Z)({},L),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"logSearchConfig",id:"log_search_configuration",name:"log_search_configuration",checked:x,onChange:function(e){var t=e.target.checked;H("logSearchCustom",t)},label:"Override Log Search defaults"})}),x&&(0,T.jsxs)(d.ZP,{xs:12,className:t.logSearchCustomFields,children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(A.Z,{id:"log_search_storage_class",name:"log_search_storage_class",onChange:function(e){H("logSearchSelectedStorageClass",e.target.value)},label:"Log Search Storage Class",value:R,options:W,disabled:W.length<1})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(I.Z,{type:"number",id:"log_search_volume_size",name:"log_search_volume_size",onChange:function(e){H("logSearchVolumeSize",e.target.value),Y("log_search_volume_size")},label:"Storage Size [Gi]",value:v,required:!0,error:B.log_search_volume_size||"",min:"0"})})}),(0,T.jsxs)("fieldset",{className:"".concat(t.fieldGroup," ").concat(t.fieldSpaceTop),children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for LogSearch"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_runAsUser",name:"logSearch_securityContext_runAsUser",onChange:function(e){H("logSearchSecurityContext",(0,s.Z)((0,s.Z)({},M),{},{runAsUser:e.target.value})),Y("logSearch_securityContext_runAsUser")},label:"Run As User",value:M.runAsUser,required:!0,error:B.logSearch_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_runAsGroup",name:"logSearch_securityContext_runAsGroup",onChange:function(e){H("logSearchSecurityContext",(0,s.Z)((0,s.Z)({},M),{},{runAsGroup:e.target.value})),Y("logSearch_securityContext_runAsGroup")},label:"Run As Group",value:M.runAsGroup,required:!0,error:B.logSearch_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_fsGroup",name:"logSearch_securityContext_fsGroup",onChange:function(e){H("logSearchSecurityContext",(0,s.Z)((0,s.Z)({},M),{},{fsGroup:e.target.value})),Y("logSearch_securityContext_fsGroup")},label:"FsGroup",value:M.fsGroup,required:!0,error:B.logSearch_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(N.Z,{value:"logSearchSecurityContextRunAsNonRoot",id:"logSearch_securityContext_runAsNonRoot",name:"logSearch_securityContext_runAsNonRoot",checked:M.runAsNonRoot,onChange:function(e){var t=e.target.checked;H("logSearchSecurityContext",(0,s.Z)((0,s.Z)({},M),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]}),(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for PostgreSQL"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"postgres_securityContext_runAsUser",name:"postgres_securityContext_runAsUser",onChange:function(e){H("logSearchPostgresSecurityContext",(0,s.Z)((0,s.Z)({},q),{},{runAsUser:e.target.value})),Y("postgres_securityContext_runAsUser")},label:"Run As User",value:q.runAsUser,required:!0,error:B.postgres_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"postgres_securityContext_runAsGroup",name:"postgres_securityContext_runAsGroup",onChange:function(e){H("logSearchPostgresSecurityContext",(0,s.Z)((0,s.Z)({},q),{},{runAsGroup:e.target.value})),Y("postgres_securityContext_runAsGroup")},label:"Run As Group",value:q.runAsGroup,required:!0,error:B.postgres_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"postgres_securityContext_fsGroup",name:"postgres_securityContext_fsGroup",onChange:function(e){H("logSearchPostgresSecurityContext",(0,s.Z)((0,s.Z)({},q),{},{fsGroup:e.target.value})),Y("postgres_securityContext_fsGroup")},label:"FsGroup",value:q.fsGroup,required:!0,error:B.postgres_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(N.Z,{value:"postgresSecurityContextRunAsNonRoot",id:"postgres_securityContext_runAsNonRoot",name:"postgres_securityContext_runAsNonRoot",checked:q.runAsNonRoot,onChange:function(e){var t=e.target.checked;H("logSearchPostgresSecurityContext",(0,s.Z)((0,s.Z)({},q),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"prometheusConfig",id:"prometheus_configuration",name:"prometheus_configuration",checked:f,onChange:function(e){var t=e.target.checked;H("prometheusCustom",t)},label:"Override Prometheus defaults"})}),f&&(0,T.jsxs)(d.ZP,{xs:12,className:t.prometheusCustomFields,children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(A.Z,{id:"prometheus_storage_class",name:"prometheus_storage_class",onChange:function(e){H("prometheusSelectedStorageClass",e.target.value)},label:"Prometheus Storage Class",value:z,options:W,disabled:W.length<1})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(I.Z,{type:"number",id:"prometheus_volume_size",name:"prometheus_volume_size",onChange:function(e){H("prometheusVolumeSize",e.target.value),Y("prometheus_volume_size")},label:"Storage Size [Gi]",value:k,required:!0,error:B.prometheus_volume_size||"",min:"0"})})}),(0,T.jsxs)("fieldset",{className:"".concat(t.fieldGroup," ").concat(t.fieldSpaceTop),children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for Prometheus"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_runAsUser",name:"prometheus_securityContext_runAsUser",onChange:function(e){H("prometheusSecurityContext",(0,s.Z)((0,s.Z)({},G),{},{runAsUser:e.target.value})),Y("prometheus_securityContext_runAsUser")},label:"Run As User",value:G.runAsUser,required:!0,error:B.prometheus_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_runAsGroup",name:"prometheus_securityContext_runAsGroup",onChange:function(e){H("prometheusSecurityContext",(0,s.Z)((0,s.Z)({},G),{},{runAsGroup:e.target.value})),Y("prometheus_securityContext_runAsGroup")},label:"Run As Group",value:G.runAsGroup,required:!0,error:B.prometheus_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_fsGroup",name:"prometheus_securityContext_fsGroup",onChange:function(e){H("prometheusSecurityContext",(0,s.Z)((0,s.Z)({},G),{},{fsGroup:e.target.value})),Y("prometheus_securityContext_fsGroup")},label:"FsGroup",value:G.fsGroup,required:!0,error:B.prometheus_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)("div",{className:"".concat(t.multiContainer," ").concat(t.fieldSpaceTop),children:(0,T.jsx)(N.Z,{value:"prometheusSecurityContextRunAsNonRoot",id:"prometheus_securityContext_runAsNonRoot",name:"prometheus_securityContext_runAsNonRoot",checked:G.runAsNonRoot,onChange:function(e){var t=e.target.checked;H("prometheusSecurityContext",(0,s.Z)((0,s.Z)({},G),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]})]})}))),z=n(94187),w=n(95467),F=n(35477),D=n(94759),E=n(43615),U=n(27207),K=n(96152),L=n(35150),M=(0,u.$j)((function(e){return{idpSelection:e.tenants.createTenant.fields.identityProvider.idpSelection,accessKeys:e.tenants.createTenant.fields.identityProvider.accessKeys,secretKeys:e.tenants.createTenant.fields.identityProvider.secretKeys,openIDConfigurationURL:e.tenants.createTenant.fields.identityProvider.openIDConfigurationURL,openIDClientID:e.tenants.createTenant.fields.identityProvider.openIDClientID,openIDSecretID:e.tenants.createTenant.fields.identityProvider.openIDSecretID,openIDCallbackURL:e.tenants.createTenant.fields.identityProvider.openIDCallbackURL,openIDClaimName:e.tenants.createTenant.fields.identityProvider.openIDClaimName,openIDScopes:e.tenants.createTenant.fields.identityProvider.openIDScopes,ADURL:e.tenants.createTenant.fields.identityProvider.ADURL,ADSkipTLS:e.tenants.createTenant.fields.identityProvider.ADSkipTLS,ADServerInsecure:e.tenants.createTenant.fields.identityProvider.ADServerInsecure,ADUserNameSearchFilter:e.tenants.createTenant.fields.identityProvider.ADUserNameSearchFilter,ADGroupSearchBaseDN:e.tenants.createTenant.fields.identityProvider.ADGroupSearchBaseDN,ADGroupSearchFilter:e.tenants.createTenant.fields.identityProvider.ADGroupSearchFilter,ADGroupNameAttribute:e.tenants.createTenant.fields.identityProvider.ADGroupNameAttribute,ADUserDNs:e.tenants.createTenant.fields.identityProvider.ADUserDNs,ADUserNameFormat:e.tenants.createTenant.fields.identityProvider.ADUserNameFormat,ADLookupBindDN:e.tenants.createTenant.fields.identityProvider.ADLookupBindDN,ADLookupBindPassword:e.tenants.createTenant.fields.identityProvider.ADLookupBindPassword,ADUserDNSearchBaseDN:e.tenants.createTenant.fields.identityProvider.ADUserDNSearchBaseDN,ADUserDNSearchFilter:e.tenants.createTenant.fields.identityProvider.ADUserDNSearchFilter,ADServerStartTLS:e.tenants.createTenant.fields.identityProvider.ADServerStartTLS}}),{updateAddField:j.HM,isPageValid:j.NO}),q=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)((0,s.Z)({shortened:{gridTemplateColumns:"auto auto 50px 50px",display:"grid",gridGap:15,marginBottom:10,"& input":{fontWeight:400}},buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},protocolRadioOptions:{display:"flex",flexFlow:"column",marginBottom:10,"& label":{fontSize:14},"& div":{display:"flex",flexFlow:"column",alignItems:"baseline"}},adUserDnRows:{display:"flex"}},f.QV),f.DF),f.oO),f.AK))}))(M((function(e){var t=e.classes,n=e.idpSelection,a=e.accessKeys,r=e.secretKeys,s=e.openIDConfigurationURL,l=e.openIDClientID,c=e.openIDSecretID,u=e.openIDCallbackURL,m=e.openIDClaimName,p=e.openIDScopes,g=e.ADURL,f=e.ADSkipTLS,h=e.ADServerInsecure,x=e.ADUserNameSearchFilter,v=e.ADGroupSearchBaseDN,y=e.ADGroupSearchFilter,C=e.ADGroupNameAttribute,S=e.ADUserDNs,j=e.ADUserNameFormat,A=e.ADLookupBindDN,k=e.ADLookupBindPassword,R=e.ADUserDNSearchBaseDN,M=e.ADUserDNSearchFilter,q=e.ADServerStartTLS,G=e.updateAddField,V=e.isPageValid,O=(0,o.useState)({}),B=(0,i.Z)(O,2),$=B[0],W=B[1],H=(0,o.useCallback)((function(e,t){G("identityProvider",e,t)}),[G]),Y=function(e,t){var n=(0,Z.Z)(a);n[e]=t,H("accessKeys",n)},Q=function(e,t){var n=(0,Z.Z)(r);n[e]=t,H("secretKeys",n)},X=function(e,t){var n=(0,Z.Z)(S);n[e]=t,H("ADUserDNs",n)},J=function(e){W((0,_.h)($,e))};(0,o.useEffect)((function(){var e=[];if("Built-in"===n){e=(0,Z.Z)(e);for(var t=0;t1&&(a.splice(n,1),r.splice(n,1),Y(a.length-1,a[a.length-1]))},children:(0,T.jsx)(L.Z,{})})})}),(0,T.jsx)(z.Z,{title:"Randomize Credentials","aria-label":"add",children:(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(w.Z,{onClick:function(){Y(n,(0,_.z)(16)),Q(n,(0,_.z)(32))},size:"small",children:(0,T.jsx)(D.Z,{})})})})]})]})},"identityField-".concat(n.toString()))}))),"AD"===n&&(ee=S.map((function(e,n){return(0,T.jsx)(o.Fragment,{children:(0,T.jsxs)("div",{className:t.adUserDnRows,children:[(0,T.jsx)(I.Z,{id:"ad-userdn-".concat(n.toString()),label:"",placeholder:"",name:"ad-userdn-".concat(n.toString()),value:S[n],onChange:function(e){X(n,e.target.value),J("ad-userdn-".concat(n.toString()))},index:n,error:$["ad-userdn-".concat(n.toString())]||""},"csv-ad-userdn-".concat(n.toString())),(0,T.jsxs)("div",{className:t.buttonTray,children:[(0,T.jsx)(z.Z,{title:"Add User","aria-label":"add",children:(0,T.jsx)(w.Z,{size:"small",onClick:function(){S.push(""),X(S.length-1,"")},children:(0,T.jsx)(K.Z,{})})}),(0,T.jsx)(z.Z,{title:"Remove","aria-label":"add",children:(0,T.jsx)(w.Z,{size:"small",style:{marginLeft:16},onClick:function(){S.length>1&&(S.splice(n,1),Y(S.length-1,S[S.length-1]))},children:(0,T.jsx)(E.Z,{})})})]})]})},"identityField-".concat(n.toString()))}))),(0,T.jsxs)(b.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Identity Provider"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Access to the tenant can be controlled via an external Identity Manager."})]}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.protocolRadioOptions,children:[(0,T.jsx)("label",{children:"Protocol"}),(0,T.jsx)(U.Z,{currentSelection:n,id:"idp-options",name:"idp-options",label:" ",onChange:function(e){H("idpSelection",e.target.value)},selectorOptions:[{label:"Built-in",value:"Built-in"},{label:"OpenID",value:"OpenID"},{label:"Active Directory",value:"AD"}]})]}),"Built-in"===n&&(0,T.jsxs)(o.Fragment,{children:["Add additional users",ee]}),"OpenID"===n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_CONFIGURATION_URL",name:"openID_CONFIGURATION_URL",onChange:function(e){H("openIDConfigurationURL",e.target.value),J("openID_CONFIGURATION_URL")},label:"Configuration URL",value:s,placeholder:"https://your-identity-provider.com/.well-known/openid-configuration",error:$.openID_CONFIGURATION_URL||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_clientID",name:"openID_clientID",onChange:function(e){H("openIDClientID",e.target.value),J("openID_clientID")},label:"Client ID",value:l,error:$.openID_clientID||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_secretID",name:"openID_secretID",onChange:function(e){H("openIDSecretID",e.target.value),J("openID_secretID")},label:"Secret ID",value:c,error:$.openID_secretID||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_callbackURL",name:"openID_callbackURL",onChange:function(e){H("openIDCallbackURL",e.target.value),J("openID_callbackURL")},label:"Callback URL",value:u,placeholder:"https://your-console-endpoint:9443/oauth_callback",error:$.openID_callbackURL||""})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_claimName",name:"openID_claimName",onChange:function(e){H("openIDClaimName",e.target.value),J("openID_claimName")},label:"Claim Name",value:m,error:$.openID_claimName||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_scopes",name:"openID_scopes",onChange:function(e){H("openIDScopes",e.target.value),J("openID_scopes")},label:"Scopes",value:p})})]}),"AD"===n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"AD_URL",name:"AD_URL",onChange:function(e){H("ADURL",e.target.value),J("AD_URL")},label:"LDAP Server Address",value:g,placeholder:"ldap-server:636",error:$.AD_URL||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(N.Z,{value:"ad_skipTLS",id:"ad_skipTLS",name:"ad_skipTLS",checked:f,onChange:function(e){var t=e.target.checked;H("ADSkipTLS",t)},label:"Skip TLS Verification"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(N.Z,{value:"ad_serverInsecure",id:"ad_serverInsecure",name:"ad_serverInsecure",checked:h,onChange:function(e){var t=e.target.checked;H("ADServerInsecure",t)},label:"Server Insecure"})}),h?(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)(F.Z,{className:t.error,variant:"caption",display:"block",gutterBottom:!0,children:"Warning: All traffic with Active Directory will be unencrypted"}),(0,T.jsx)("br",{})]}):null,(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(N.Z,{value:"ad_serverStartTLS",id:"ad_serverStartTLS",name:"ad_serverStartTLS",checked:q,onChange:function(e){var t=e.target.checked;H("ADServerStartTLS",t)},label:"Start TLS connection to AD/LDAP server"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_userNameFormat",name:"ad_userNameFormat",onChange:function(e){H("ADUserNameFormat",e.target.value)},label:"Username Format",value:j,placeholder:"uid=%s,cn=accounts,dc=myldapserver,dc=com"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_userNameFilter",name:"ad_userNameFilter",onChange:function(e){H("ADUserNameSearchFilter",e.target.value)},label:"Username Search Filter",value:x,placeholder:"(|(objectclass=posixAccount)(uid=%s))"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_groupSearchBaseDN",name:"ad_groupSearchBaseDN",onChange:function(e){H("ADGroupSearchBaseDN",e.target.value)},label:"Group Search Base DN",value:v,placeholder:"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_groupSearchFilter",name:"ad_groupSearchFilter",onChange:function(e){H("ADGroupSearchFilter",e.target.value)},label:"Group Search Filter",value:y,placeholder:"(&(objectclass=groupOfNames)(member=%s))"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_groupNameAttribute",name:"ad_groupNameAttribute",onChange:function(e){H("ADGroupNameAttribute",e.target.value)},label:"Group Name Attribute",value:C,placeholder:"cn"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_lookupBindDN",name:"ad_lookupBindDN",onChange:function(e){H("ADLookupBindDN",e.target.value)},label:"Lookup Bind DN",value:A,placeholder:"cn=admin,dc=min,dc=io"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_lookupBindPassword",name:"ad_lookupBindPassword",onChange:function(e){H("ADLookupBindPassword",e.target.value)},label:"Lookup Bind Password",value:k,placeholder:"admin"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_userDNSearchBaseDN",name:"ad_userDNSearchBaseDN",onChange:function(e){H("ADUserDNSearchBaseDN",e.target.value)},label:"User DN Search Base DN",value:R,placeholder:"dc=min,dc=io"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_userDNSearchFilter",name:"ad_userDNSearchFilter",onChange:function(e){H("ADUserDNSearchFilter",e.target.value)},label:"User DN Search Filter",value:M,placeholder:"(uid=%s)"})}),(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"List of user DNs (Distinguished Names) to be Tenant Administrators"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:ee})]})]})]})}))),G=n(82461),V=n(14792),O=(0,u.$j)((function(e){return{enableTLS:e.tenants.createTenant.fields.security.enableTLS,enableAutoCert:e.tenants.createTenant.fields.security.enableAutoCert,enableCustomCerts:e.tenants.createTenant.fields.security.enableCustomCerts,minioCertificates:e.tenants.createTenant.certificates.minioCertificates,caCertificates:e.tenants.createTenant.certificates.caCertificates}}),{updateAddField:j.HM,isPageValid:j.NO,addFileToCaCertificates:j.Eq,deleteCaCertificate:j.IG,addCaCertificate:j.fK,addKeyPair:j.Mg,addFileToKeyPair:j.aN,deleteKeyPair:j.XX}),B=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)({minioCertificateRows:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1}},fileItem:{marginRight:10,display:"flex","& div label":{minWidth:50},"@media (max-width: 900px)":{flexFlow:"column"}},minioCertsContainer:{marginBottom:15},minioCACertsRow:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1,"& div label":{minWidth:50}}},rowActions:{display:"flex",justifyContent:"flex-end","@media (max-width: 900px)":{flex:1}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}}},f.QV),f.oO),f.AK))}))(O((function(e){var t=e.classes,n=e.enableTLS,a=e.enableAutoCert,r=e.enableCustomCerts,i=e.minioCertificates,s=e.caCertificates,l=e.updateAddField,c=e.isPageValid,u=e.addFileToCaCertificates,m=e.deleteCaCertificate,p=e.addCaCertificate,g=e.addKeyPair,f=e.addFileToKeyPair,h=e.deleteKeyPair,x=(0,o.useCallback)((function(e,t){l("security",e,t)}),[l]);return(0,o.useEffect)((function(){c("security",!n||(!!a||!!r))}),[n,a,r,c]),(0,T.jsxs)(b.Z,{className:t.paperWrapper,children:[(0,T.jsx)("div",{className:t.headerElement,children:(0,T.jsx)("h3",{className:t.h3Section,children:"Security"})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)(N.Z,{value:"enableTLS",id:"enableTLS",name:"enableTLS",checked:n,onChange:function(e){var t=e.target.checked;x("enableTLS",t)},label:"Enable TLS"}),"Enable TLS for the tenant, this is required for Encryption Configuration",n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("br",{}),(0,T.jsx)("br",{}),(0,T.jsx)(F.Z,{variant:"caption",display:"block",gutterBottom:!0,children:"AutoCert: MinIO Operator will generate all TLS certificates automatically"}),(0,T.jsx)(F.Z,{variant:"caption",display:"block",gutterBottom:!0,children:"Custom certificates: Allow user to provide your own certificates"}),(0,T.jsx)("br",{})]})]}),n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)(N.Z,{value:"enableAutoCert",id:"enableAutoCert",name:"enableAutoCert",checked:a,onChange:function(e){var t=e.target.checked;x("enableAutoCert",t)},label:"Enable AutoCert"}),(0,T.jsx)(N.Z,{value:"enableCustomCerts",id:"enableCustomCerts",name:"enableCustomCerts",checked:r,onChange:function(e){var t=e.target.checked;x("enableCustomCerts",t)},label:"Custom Certificates"})]}),r&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{container:!0,children:(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.minioCertsContainer,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"MinIO Certificates"}),i.map((function(e){return(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.minioCertificateRows,children:[(0,T.jsxs)(d.ZP,{item:!0,xs:10,className:t.fileItem,children:[(0,T.jsx)(G.Z,{onChange:function(t,n){f(e.id,"cert",n,t)},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert}),(0,T.jsx)(G.Z,{onChange:function(t,n){f(e.id,"key",n,t)},accept:".key,.pem",id:"tlsKey",name:"tlsKey",label:"Key",value:e.key})]}),(0,T.jsxs)(d.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(w.Z,{size:"small",onClick:g,children:(0,T.jsx)(V.Z,{})})}),(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(w.Z,{size:"small",onClick:function(){h(e.id)},children:(0,T.jsx)(L.Z,{})})})]})]},e.id)}))]})})}),(0,T.jsx)(d.ZP,{container:!0,children:(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.minioCertsContainer,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"MinIO CA Certificates"}),s.map((function(e){return(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.minioCACertsRow,children:[(0,T.jsx)(d.ZP,{item:!0,xs:6,children:(0,T.jsx)(G.Z,{onChange:function(t,n){u(e.id,"cert",n,t)},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert})}),(0,T.jsx)(d.ZP,{item:!0,xs:6,children:(0,T.jsxs)("div",{className:t.rowActions,children:[(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(w.Z,{size:"small",onClick:p,children:(0,T.jsx)(V.Z,{})})}),(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(w.Z,{size:"small",onClick:function(){m(e.id)},children:(0,T.jsx)(L.Z,{})})})]})})]},e.id)}))]})})})]})]})]})}))),$=(0,u.$j)((function(e){return{replicas:e.tenants.createTenant.fields.encryption.replicas,enableEncryption:e.tenants.createTenant.fields.encryption.enableEncryption,encryptionType:e.tenants.createTenant.fields.encryption.encryptionType,gemaltoEndpoint:e.tenants.createTenant.fields.encryption.gemaltoEndpoint,gemaltoToken:e.tenants.createTenant.fields.encryption.gemaltoToken,gemaltoDomain:e.tenants.createTenant.fields.encryption.gemaltoDomain,gemaltoRetry:e.tenants.createTenant.fields.encryption.gemaltoRetry,awsEndpoint:e.tenants.createTenant.fields.encryption.awsEndpoint,awsRegion:e.tenants.createTenant.fields.encryption.awsRegion,awsKMSKey:e.tenants.createTenant.fields.encryption.awsKMSKey,awsAccessKey:e.tenants.createTenant.fields.encryption.awsAccessKey,awsSecretKey:e.tenants.createTenant.fields.encryption.awsSecretKey,awsToken:e.tenants.createTenant.fields.encryption.awsToken,vaultEndpoint:e.tenants.createTenant.fields.encryption.vaultEndpoint,vaultEngine:e.tenants.createTenant.fields.encryption.vaultEngine,vaultNamespace:e.tenants.createTenant.fields.encryption.vaultNamespace,vaultPrefix:e.tenants.createTenant.fields.encryption.vaultPrefix,vaultAppRoleEngine:e.tenants.createTenant.fields.encryption.vaultAppRoleEngine,vaultId:e.tenants.createTenant.fields.encryption.vaultId,vaultSecret:e.tenants.createTenant.fields.encryption.vaultSecret,vaultRetry:e.tenants.createTenant.fields.encryption.vaultRetry,vaultPing:e.tenants.createTenant.fields.encryption.vaultPing,azureEndpoint:e.tenants.createTenant.fields.encryption.azureEndpoint,azureTenantID:e.tenants.createTenant.fields.encryption.azureTenantID,azureClientID:e.tenants.createTenant.fields.encryption.azureClientID,azureClientSecret:e.tenants.createTenant.fields.encryption.azureClientSecret,gcpProjectID:e.tenants.createTenant.fields.encryption.gcpProjectID,gcpEndpoint:e.tenants.createTenant.fields.encryption.gcpEndpoint,gcpClientEmail:e.tenants.createTenant.fields.encryption.gcpClientEmail,gcpClientID:e.tenants.createTenant.fields.encryption.gcpClientID,gcpPrivateKeyID:e.tenants.createTenant.fields.encryption.gcpPrivateKeyID,gcpPrivateKey:e.tenants.createTenant.fields.encryption.gcpPrivateKey,enableCustomCertsForKES:e.tenants.createTenant.fields.encryption.enableCustomCertsForKES,enableAutoCert:e.tenants.createTenant.fields.security.enableAutoCert,enableTLS:e.tenants.createTenant.fields.security.enableTLS,minioCertificates:e.tenants.createTenant.certificates.minioCertificates,serverCertificate:e.tenants.createTenant.certificates.serverCertificate,clientCertificate:e.tenants.createTenant.certificates.clientCertificate,vaultCertificate:e.tenants.createTenant.certificates.vaultCertificate,vaultCA:e.tenants.createTenant.certificates.vaultCA,gemaltoCA:e.tenants.createTenant.certificates.gemaltoCA,enableCustomCerts:e.tenants.createTenant.fields.security.enableCustomCerts,kesSecurityContext:e.tenants.createTenant.fields.encryption.kesSecurityContext}}),{updateAddField:j.HM,isPageValid:j.NO,addFileServerCert:j.$1,addFileClientCert:j.BI,addFileVaultCert:j.cl,addFileVaultCa:j.fk,addFileGemaltoCa:j.MX}),W=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)((0,s.Z)({encryptionTypeOptions:{marginBottom:15},mutualTlsConfig:{marginTop:15,"& fieldset":{flex:1}},rightSpacer:{marginRight:15},responsiveContainer:{"@media (max-width: 900px)":{display:"flex",flexFlow:"column"}}},f.QV),f.DF),f.oO),f.AK))}))($((function(e){var t=e.classes,n=e.updateAddField,a=e.isPageValid,r=e.addFileServerCert,l=e.addFileClientCert,c=e.addFileVaultCert,u=e.addFileVaultCa,m=e.addFileGemaltoCa,p=e.enableEncryption,g=e.enableCustomCerts,f=e.encryptionType,h=e.gemaltoEndpoint,x=e.gemaltoToken,v=e.gemaltoDomain,y=e.gemaltoRetry,C=e.awsEndpoint,S=e.awsRegion,j=e.awsKMSKey,A=e.awsAccessKey,k=e.awsSecretKey,R=e.awsToken,z=e.vaultEndpoint,w=e.vaultEngine,F=e.vaultNamespace,D=e.vaultPrefix,E=e.vaultAppRoleEngine,K=e.vaultId,L=e.vaultSecret,M=e.vaultRetry,q=e.vaultPing,V=e.azureEndpoint,O=e.azureTenantID,B=e.azureClientID,$=e.azureClientSecret,W=e.gcpProjectID,H=e.gcpEndpoint,Y=e.gcpClientEmail,Q=e.gcpClientID,X=e.gcpPrivateKeyID,J=e.gcpPrivateKey,ee=e.enableCustomCertsForKES,te=e.enableAutoCert,ne=e.enableTLS,ae=e.minioCertificates,re=e.serverCertificate,ie=e.clientCertificate,se=e.vaultCertificate,oe=e.vaultCA,le=e.gemaltoCA,ce=e.kesSecurityContext,ue=e.replicas,de=(0,o.useState)({}),me=(0,i.Z)(de,2),pe=me[0],ge=me[1],fe=!1;ne&&(te||ae&&ae.filter((function(e){return e.encoded_key&&e.encoded_cert})).length>0)&&(fe=!0);var he=(0,o.useCallback)((function(e,t){n("encryption",e,t)}),[n]),xe=function(e){ge((0,_.h)(pe,e))};return(0,o.useEffect)((function(){var e=[];p&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"replicas",required:!0,value:ue,customValidation:parseInt(ue)<1,customValidationMessage:"Replicas needs to be 1 or greater"},{fieldKey:"kes_securityContext_runAsUser",required:!0,value:ce.runAsUser,customValidation:""===ce.runAsUser||parseInt(ce.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"kes_securityContext_runAsGroup",required:!0,value:ce.runAsGroup,customValidation:""===ce.runAsGroup||parseInt(ce.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"kes_securityContext_fsGroup",required:!0,value:ce.fsGroup,customValidation:""===ce.fsGroup||parseInt(ce.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}]),g&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"serverKey",required:!te,value:re.encoded_key},{fieldKey:"serverCert",required:!te,value:re.encoded_cert},{fieldKey:"clientKey",required:!te,value:ie.encoded_key},{fieldKey:"clientCert",required:!te,value:ie.encoded_cert}])),"vault"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"vault_endpoint",required:!0,value:z},{fieldKey:"vault_id",required:!0,value:K},{fieldKey:"vault_secret",required:!0,value:L},{fieldKey:"vault_ping",required:!1,value:q,customValidation:parseInt(q)<0,customValidationMessage:"Value needs to be 0 or greater"},{fieldKey:"vault_retry",required:!1,value:M,customValidation:parseInt(M)<0,customValidationMessage:"Value needs to be 0 or greater"}])),"aws"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"aws_endpoint",required:!0,value:C},{fieldKey:"aws_region",required:!0,value:S},{fieldKey:"aws_accessKey",required:!0,value:A},{fieldKey:"aws_secretKey",required:!0,value:k}])),"gemalto"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"gemalto_endpoint",required:!0,value:h},{fieldKey:"gemalto_token",required:!0,value:x},{fieldKey:"gemalto_domain",required:!0,value:v},{fieldKey:"gemalto_retry",required:!1,value:y,customValidation:parseInt(y)<0,customValidationMessage:"Value needs to be 0 or greater"}])),"azure"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"azure_endpoint",required:!0,value:V},{fieldKey:"azure_tenant_id",required:!0,value:O},{fieldKey:"azure_client_id",required:!0,value:B},{fieldKey:"azure_client_secret",required:!0,value:$}])));var t=(0,P.R)(e);a("encryption",0===Object.keys(t).length),ge(t)}),[p,f,z,w,K,L,q,M,C,S,k,A,h,x,v,y,W,H,Y,Q,X,J,V,O,B,$,a,te,g,re.encoded_key,re.encoded_cert,ie.encoded_key,ie.encoded_cert,ce,ue]),(0,T.jsxs)(b.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Encryption"}),(0,T.jsx)("span",{className:t.descriptionText,children:"How would you like to encrypt the information at rest."})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(N.Z,{value:"enableEncryption",id:"enableEncryption",name:"enableEncryption",checked:p,onChange:function(e){var t=e.target.checked;he("enableEncryption",t)},label:"Enable Server Side Encryption",disabled:!fe})}),p&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.encryptionTypeOptions,children:(0,T.jsx)(U.Z,{currentSelection:f,id:"encryptionType",name:"encryptionType",label:"Encryption Options",onChange:function(e){he("encryptionType",e.target.value)},selectorOptions:[{label:"Vault",value:"vault"},{label:"AWS",value:"aws"},{label:"Gemalto",value:"gemalto"},{label:"GCP",value:"gcp"},{label:"Azure",value:"azure"}]})}),"vault"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(N.Z,{value:"enableCustomCertsForKES",id:"enableCustomCertsForKES",name:"enableCustomCertsForKES",checked:ee||!te,onChange:function(e){var t=e.target.checked;he("enableCustomCertsForKES",t)},label:"Custom Certificates",disabled:!te})}),(ee||!te)&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{container:!0,children:(0,T.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Encryption Service Certificates"}),(0,T.jsx)(G.Z,{onChange:function(e,t){r("key",t,e),xe("serverKey")},accept:".key,.pem",id:"serverKey",name:"serverKey",label:"Key",error:pe.serverKey||"",value:re.key,required:!te}),(0,T.jsx)(G.Z,{onChange:function(e,t){r("cert",t,e),xe("serverCert")},accept:".cer,.crt,.cert,.pem",id:"serverCert",name:"serverCert",label:"Cert",error:pe.serverCert||"",value:re.cert,required:!te})]})})}),(0,T.jsx)(d.ZP,{container:!0,style:{marginBottom:15},children:(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Mutual TLS authentication"}),(0,T.jsx)(G.Z,{onChange:function(e,t){l("key",t,e),xe("clientKey")},accept:".key,.pem",id:"clientKey",name:"clientKey",label:"Key",error:pe.clientKey||"",value:ie.key,required:!te}),(0,T.jsx)(G.Z,{onChange:function(e,t){l("cert",t,e),xe("clientCert")},accept:".cer,.crt,.cert,.pem",id:"clientCert",name:"clientCert",label:"Cert",error:pe.clientCert||"",value:ie.cert,required:!te})]})})})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_endpoint",name:"vault_endpoint",onChange:function(e){he("vaultEndpoint",e.target.value),xe("vault_endpoint")},label:"Endpoint",value:z,error:pe.vault_endpoint||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_engine",name:"vault_engine",onChange:function(e){he("vaultEngine",e.target.value),xe("vault_engine")},label:"Engine",value:w})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_namespace",name:"vault_namespace",onChange:function(e){he("vaultNamespace",e.target.value)},label:"Namespace",value:F})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_prefix",name:"vault_prefix",onChange:function(e){he("vaultPrefix",e.target.value)},label:"Prefix",value:D})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"App Role"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_approle_engine",name:"vault_approle_engine",onChange:function(e){he("vaultAppRoleEngine",e.target.value)},label:"Engine",value:E})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_id",name:"vault_id",onChange:function(e){he("vaultId",e.target.value),xe("vault_id")},label:"AppRole ID",value:K,error:pe.vault_id||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_secret",name:"vault_secret",onChange:function(e){he("vaultSecret",e.target.value),xe("vault_secret")},label:"AppRole Secret",value:L,error:pe.vault_secret||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{type:"number",min:"0",id:"vault_retry",name:"vault_retry",onChange:function(e){he("vaultRetry",e.target.value),xe("vault_retry")},label:"Retry (Seconds)",value:M,error:pe.vault_retry||""})})]})}),(0,T.jsx)(d.ZP,{container:!0,className:t.mutualTlsConfig,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Mutual TLS authentication (optional)"}),(0,T.jsx)(G.Z,{onChange:function(e,t){c("key",t,e),xe("vault_key")},accept:".key,.pem",id:"vault_key",name:"vault_key",label:"Key",value:se.key}),(0,T.jsx)(G.Z,{onChange:function(e,t){c("cert",t,e),xe("vault_cert")},accept:".cer,.crt,.cert,.pem",id:"vault_cert",name:"vault_cert",label:"Cert",value:se.cert}),(0,T.jsx)(G.Z,{onChange:function(e,t){u(t,e),xe("vault_ca")},accept:".cer,.crt,.cert,.pem",id:"vault_ca",name:"vault_ca",label:"CA",value:oe.cert})]})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,style:{marginTop:15},children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Status"}),(0,T.jsx)(I.Z,{type:"number",min:"0",id:"vault_ping",name:"vault_ping",onChange:function(e){he("vaultPing",e.target.value),xe("vault_ping")},label:"Ping (Seconds)",value:q,error:pe.vault_ping||""})]})})]}),"azure"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"azure_endpoint",name:"azure_endpoint",onChange:function(e){he("azureEndpoint",e.target.value),xe("azure_endpoint")},label:"Endpoint",value:V,error:pe.azure_endpoint||""})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"azure_tenant_id",name:"azure_tenant_id",onChange:function(e){he("azureTenantID",e.target.value),xe("azure_tenant_id")},label:"Tenant ID",value:O,error:pe.azure_tenant_id||""})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"azure_client_id",name:"azure_client_id",onChange:function(e){he("azureClientID",e.target.value),xe("azure_client_id")},label:"Client ID",value:B,error:pe.azure_client_id||""})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"azure_client_secret",name:"azure_client_secret",onChange:function(e){he("azureClientSecret",e.target.value),xe("azure_client_secret")},label:"Client Secret",value:$,error:pe.azure_client_secret||""})})]})})]}),"gcp"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_project_id",name:"gcp_project_id",onChange:function(e){he("gcpProjectID",e.target.value)},label:"Project ID",value:W})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_endpoint",name:"gcp_endpoint",onChange:function(e){he("gcpEndpoint",e.target.value)},label:"Endpoint",value:H})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_client_email",name:"gcp_client_email",onChange:function(e){he("gcpClientEmail",e.target.value)},label:"Client Email",value:Y})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_client_id",name:"gcp_client_id",onChange:function(e){he("gcpClientID",e.target.value)},label:"Client ID",value:Q})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_private_key_id",name:"gcp_private_key_id",onChange:function(e){he("gcpPrivateKeyID",e.target.value)},label:"Private Key ID",value:X})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_private_key",name:"gcp_private_key",onChange:function(e){he("gcpPrivateKey",e.target.value)},label:"Private Key",value:J})})]})})]}),"aws"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_endpoint",name:"aws_endpoint",onChange:function(e){he("awsEndpoint",e.target.value),xe("aws_endpoint")},label:"Endpoint",value:C,error:pe.aws_endpoint||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_region",name:"aws_region",onChange:function(e){he("awsRegion",e.target.value),xe("aws_region")},label:"Region",value:S,error:pe.aws_region||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_kmsKey",name:"aws_kmsKey",onChange:function(e){he("awsKMSKey",e.target.value)},label:"KMS Key",value:j})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_accessKey",name:"aws_accessKey",onChange:function(e){he("awsAccessKey",e.target.value),xe("aws_accessKey")},label:"Access Key",value:A,error:pe.aws_accessKey||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_secretKey",name:"aws_secretKey",onChange:function(e){he("awsSecretKey",e.target.value),xe("aws_secretKey")},label:"Secret Key",value:k,error:pe.aws_secretKey||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_token",name:"aws_token",onChange:function(e){he("awsToken",e.target.value)},label:"Token",value:R})})]})})]}),"gemalto"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gemalto_endpoint",name:"gemalto_endpoint",onChange:function(e){he("gemaltoEndpoint",e.target.value),xe("gemalto_endpoint")},label:"Endpoint",value:h,error:pe.gemalto_endpoint||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gemalto_token",name:"gemalto_token",onChange:function(e){he("gemaltoToken",e.target.value),xe("gemalto_token")},label:"Token",value:x,error:pe.gemalto_token||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gemalto_domain",name:"gemalto_domain",onChange:function(e){he("gemaltoDomain",e.target.value),xe("gemalto_domain")},label:"Domain",value:v,error:pe.gemalto_domain||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{type:"number",min:"0",id:"gemalto_retry",name:"gemalto_retry",onChange:function(e){he("gemaltoRetry",e.target.value),xe("gemalto_retry")},label:"Retry (seconds)",value:y,error:pe.gemalto_retry||""})})]})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Custom CA Root certificate verification"}),(0,T.jsx)(G.Z,{onChange:function(e,t){m(t,e),xe("gemalto_ca")},accept:".cer,.crt,.cert,.pem",id:"gemalto_ca",name:"gemalto_ca",label:"CA",value:le.cert})]})})]}),(0,T.jsx)("div",{className:t.headerElement,children:(0,T.jsx)("h4",{className:t.h3Section,children:"Additional Configurations"})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,classes:t.formFieldRow,children:(0,T.jsx)(I.Z,{type:"number",min:"1",id:"replicas",name:"replicas",onChange:function(e){he("replicas",e.target.value),xe("replicas")},label:"Replicas",value:ue,required:!0,error:pe.replicas||""})}),(0,T.jsxs)("fieldset",{className:t.fieldGroup,style:{marginTop:15},children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for KES pods"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.kesSecurityContext,children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveContainer),children:[(0,T.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,T.jsx)(I.Z,{type:"number",id:"kes_securityContext_runAsUser",name:"kes_securityContext_runAsUser",onChange:function(e){he("kesSecurityContext",(0,s.Z)((0,s.Z)({},ce),{},{runAsUser:e.target.value})),xe("kes_securityContext_runAsUser")},label:"Run As User",value:ce.runAsUser,required:!0,error:pe.kes_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,T.jsx)(I.Z,{type:"number",id:"kes_securityContext_runAsGroup",name:"kes_securityContext_runAsGroup",onChange:function(e){he("kesSecurityContext",(0,s.Z)((0,s.Z)({},ce),{},{runAsGroup:e.target.value})),xe("kes_securityContext_runAsGroup")},label:"Run As Group",value:ce.runAsGroup,required:!0,error:pe.kes_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,T.jsx)(I.Z,{type:"number",id:"kes_securityContext_fsGroup",name:"kes_securityContext_fsGroup",onChange:function(e){he("kesSecurityContext",(0,s.Z)((0,s.Z)({},ce),{},{fsGroup:e.target.value})),xe("kes_securityContext_fsGroup")},label:"FsGroup",value:ce.fsGroup,required:!0,error:pe.kes_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(N.Z,{value:"kesSecurityContextRunAsNonRoot",id:"kes_securityContext_runAsNonRoot",name:"kes_securityContext_runAsNonRoot",checked:ce.runAsNonRoot,onChange:function(e){var t=e.target.checked;he("kesSecurityContext",(0,s.Z)((0,s.Z)({},ce),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]})]})]})}))),H=(0,u.$j)((function(e){var t=e.tenants.createTenant;return{podAffinity:t.fields.affinity.podAffinity,nodeSelectorLabels:t.fields.affinity.nodeSelectorLabels,withPodAntiAffinity:t.fields.affinity.withPodAntiAffinity,keyValuePairs:t.nodeSelectorPairs}}),{setModalErrorSnackMessage:y.zb,updateAddField:j.HM,isPageValid:j.NO,setKeyValuePairs:j.i$}),Y=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)({overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},affinityConfigField:{display:"flex"},affinityFieldLabel:{display:"flex",flexFlow:"column",flex:1},radioField:{display:"flex",alignItems:"flex-start",marginTop:10,"& div:first-child":{display:"flex",flexFlow:"column",alignItems:"baseline",textAlign:"left !important"}},affinityLabelKey:{"& div:first-child":{marginBottom:0}},affinityLabelValue:{marginLeft:10,"& div:first-child":{marginBottom:0}},rowActions:{display:"flex",alignItems:"center"},fieldContainer:{marginBottom:0},affinityRow:{marginBottom:10,display:"flex"}},f.oO),f.AK))}))(H((function(e){var t=e.classes,n=e.podAffinity,a=e.nodeSelectorLabels,r=e.withPodAntiAffinity,s=e.setModalErrorSnackMessage,l=e.updateAddField,c=e.keyValuePairs,u=e.setKeyValuePairs,m=e.isPageValid,p=(0,o.useState)({}),g=(0,i.Z)(p,2),f=g[0],x=g[1],v=(0,o.useState)(!0),y=(0,i.Z)(v,2),C=y[0],S=y[1],j=(0,o.useState)({}),_=(0,i.Z)(j,2),k=_[0],R=_[1],z=(0,o.useState)([]),F=(0,i.Z)(z,2),D=F[0],E=F[1],K=(0,o.useCallback)((function(e,t){l("affinity",e,t)}),[l]);return(0,o.useEffect)((function(){C&&h.Z.invoke("GET","/api/v1/nodes/labels").then((function(e){S(!1),R(e);var t=[];for(var n in e)t.push({label:n,value:n});E(t)})).catch((function(e){S(!1),s(e),R({})}))}),[s,C]),(0,o.useEffect)((function(){if(c){var e=c.filter((function(e){return""!==e.key})).map((function(e){return"".concat(e.key,"=").concat(e.value)})).filter((function(e,t,n){return n.indexOf(e)===t})).join("&");K("nodeSelectorLabels",e)}}),[c,K]),(0,o.useEffect)((function(){var e=[];if("nodeSelector"===n){var t=!0,r=a.split("&");1===r.length&&""===r[0]&&(t=!1),r.forEach((function(e,n){var a=e.split("=");2!==a.length&&(t=!1),n+1!==r.length&&(""!==a[0]&&""!==a[1]||(t=!1))})),e=[].concat((0,Z.Z)(e),[{fieldKey:"labels",required:!0,value:a,customValidation:!t,customValidationMessage:"You need to add at least one label key-pair"}])}var i=(0,P.R)(e);m("affinity",0===Object.keys(i).length),x(i)}),[m,n,a]),(0,T.jsxs)(b.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Pod Placement"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Configure how pods will be assigned to nodes"})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.affinityConfigField,children:(0,T.jsxs)(d.ZP,{item:!0,className:t.affinityFieldLabel,children:[(0,T.jsx)("div",{className:t.label,children:"Type"}),(0,T.jsx)("div",{className:"".concat(t.descriptionText," ").concat(t.affinityHelpText),children:"MinIO supports multiple configurations for Pod Affinity"}),(0,T.jsx)(d.ZP,{item:!0,className:t.radioField,children:(0,T.jsx)(U.Z,{currentSelection:n,id:"affinity-options",name:"affinity-options",label:" ",onChange:function(e){K("podAffinity",e.target.value)},selectorOptions:[{label:"None",value:"none"},{label:"Default (Pod Anti-Affinnity)",value:"default"},{label:"Node Selector",value:"nodeSelector"}]})})]})}),"nodeSelector"===n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(N.Z,{value:"with_pod_anti_affinity",id:"with_pod_anti_affinity",name:"with_pod_anti_affinity",checked:r,onChange:function(e){var t=e.target.checked;K("withPodAntiAffinity",t)},label:"With Pod Anti-Affinity"})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)("h3",{children:"Labels"}),(0,T.jsx)("span",{className:t.error,children:f.labels}),(0,T.jsx)(d.ZP,{container:!0,children:c&&c.map((function(e,n){return(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.affinityRow,children:[(0,T.jsxs)(d.ZP,{item:!0,xs:5,className:t.affinityLabelKey,children:[D.length>0&&(0,T.jsx)(A.Z,{onChange:function(e){var t=e.target.value,a=Object.assign([],c);a[n].key=e.target.value,a[n].value=k[t][0],u(a)},id:"select-access-policy",name:"select-access-policy",label:"",value:e.key,options:D}),0===D.length&&(0,T.jsx)(I.Z,{id:"nodeselector-key-".concat(n.toString()),label:"",name:"nodeselector-".concat(n.toString()),value:e.key,onChange:function(e){var t=Object.assign([],c);t[n].key=e.target.value,u(t)},index:n,placeholder:"Key"})]}),(0,T.jsxs)(d.ZP,{item:!0,xs:5,className:t.affinityLabelValue,children:[D.length>0&&(0,T.jsx)(A.Z,{onChange:function(e){var t=Object.assign([],c);t[n].value=e.target.value,u(t)},id:"select-access-policy",name:"select-access-policy",label:"",value:e.value,options:k[e.key]?k[e.key].map((function(e){return{label:e,value:e}})):[]}),0===D.length&&(0,T.jsx)(I.Z,{id:"nodeselector-value-".concat(n.toString()),label:"",name:"nodeselector-".concat(n.toString()),value:e.value,onChange:function(e){var t=Object.assign([],c);t[n].value=e.target.value,u(t)},index:n,placeholder:"value"})]}),(0,T.jsxs)(d.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(w.Z,{size:"small",onClick:function(){var e=Object.assign([],c);D.length>0?e.push({key:D[0].value,value:k[D[0].value][0]}):e.push({key:"",value:""}),u(e)},children:(0,T.jsx)(V.Z,{})})}),c.length>1&&(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(w.Z,{size:"small",onClick:function(){var e=c.filter((function(e,t){return t!==n}));u(e)},children:(0,T.jsx)(L.Z,{})})})]})]},"affinity-keyVal-".concat(n.toString()))}))})]})]})]})}))),Q=n(35721),X=n(24442),J=(0,u.$j)((function(e){return{storageClasses:e.tenants.createTenant.storageClasses,customImage:e.tenants.createTenant.fields.configure.customImage,imageName:e.tenants.createTenant.fields.configure.imageName,customDockerhub:e.tenants.createTenant.fields.configure.customDockerhub,imageRegistry:e.tenants.createTenant.fields.configure.imageRegistry,imageRegistryUsername:e.tenants.createTenant.fields.configure.imageRegistryUsername,imageRegistryPassword:e.tenants.createTenant.fields.configure.imageRegistryPassword,exposeMinIO:e.tenants.createTenant.fields.configure.exposeMinIO,exposeConsole:e.tenants.createTenant.fields.configure.exposeConsole,prometheusCustom:e.tenants.createTenant.fields.configure.prometheusCustom,tenantCustom:e.tenants.createTenant.fields.configure.tenantCustom,logSearchCustom:e.tenants.createTenant.fields.configure.logSearchCustom,logSearchVolumeSize:e.tenants.createTenant.fields.configure.logSearchVolumeSize,logSearchSizeFactor:e.tenants.createTenant.fields.configure.logSearchSizeFactor,prometheusVolumeSize:e.tenants.createTenant.fields.configure.prometheusVolumeSize,prometheusSizeFactor:e.tenants.createTenant.fields.configure.prometheusSizeFactor,logSearchSelectedStorageClass:e.tenants.createTenant.fields.configure.logSearchSelectedStorageClass,logSearchImage:e.tenants.createTenant.fields.configure.logSearchImage,kesImage:e.tenants.createTenant.fields.configure.kesImage,logSearchPostgresImage:e.tenants.createTenant.fields.configure.logSearchPostgresImage,logSearchPostgresInitImage:e.tenants.createTenant.fields.configure.logSearchPostgresInitImage,prometheusSelectedStorageClass:e.tenants.createTenant.fields.configure.prometheusSelectedStorageClass,prometheusImage:e.tenants.createTenant.fields.configure.prometheusImage,prometheusSidecarImage:e.tenants.createTenant.fields.configure.prometheusSidecarImage,prometheusInitImage:e.tenants.createTenant.fields.configure.prometheusInitImage,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{updateAddField:j.HM,isPageValid:j.NO}),ee=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)({},f.DF),f.oO),f.AK))}))(J((function(e){var t=e.classes,n=(e.storageClasses,e.customImage),a=e.imageName,r=e.customDockerhub,s=e.imageRegistry,l=e.imageRegistryUsername,c=e.imageRegistryPassword,u=(e.exposeMinIO,e.exposeConsole,e.prometheusCustom),m=e.tenantCustom,p=e.logSearchCustom,g=e.logSearchVolumeSize,f=(e.logSearchSizeFactor,e.logSearchImage),h=e.kesImage,x=e.logSearchPostgresImage,v=e.logSearchPostgresInitImage,y=e.prometheusVolumeSize,C=(e.prometheusSizeFactor,e.logSearchSelectedStorageClass),S=e.prometheusSelectedStorageClass,j=e.prometheusImage,A=e.prometheusSidecarImage,k=e.prometheusInitImage,R=e.updateAddField,z=e.isPageValid,w=(e.selectedStorageClass,(0,o.useState)({})),F=(0,i.Z)(w,2),D=F[0],E=F[1],U=(0,o.useCallback)((function(e,t){R("configure",e,t)}),[R]);(0,o.useEffect)((function(){var e=[];u&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"prometheus_storage_class",required:!0,value:S,customValidation:""===S,customValidationMessage:"Field cannot be empty"},{fieldKey:"prometheus_volume_size",required:!0,value:y,customValidation:""===y||parseInt(y)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"}])),p&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"log_search_storage_class",required:!0,value:C,customValidation:""===C,customValidationMessage:"Field cannot be empty"},{fieldKey:"log_search_volume_size",required:!0,value:g,customValidation:""===g||parseInt(g)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"}])),n&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"image",required:!1,value:a,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/minio:VERSION'"},{fieldKey:"logSearchImage",required:!1,value:f,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/logsearchapi:VERSION'"},{fieldKey:"kesImage",required:!1,value:h,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/kes:VERSION'"},{fieldKey:"logSearchPostgresImage",required:!1,value:x,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/postgres:VERSION'"},{fieldKey:"logSearchPostgresInitImage",required:!1,value:v,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"},{fieldKey:"prometheusImage",required:!1,value:j,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/prometheus:VERSION'"},{fieldKey:"prometheusSidecarImage",required:!1,value:A,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'project/container:VERSION'"},{fieldKey:"prometheusInitImage",required:!1,value:k,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"}]),r&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"registry",required:!0,value:s},{fieldKey:"registryUsername",required:!0,value:l},{fieldKey:"registryPassword",required:!0,value:c}])));var t=(0,P.R)(e);z("configure",0===Object.keys(t).length),E(t)}),[n,a,f,h,x,v,j,A,k,r,s,l,c,z,u,m,p,S,y,C,g]);var K=function(e){E((0,_.h)(D,e))};return(0,T.jsxs)(b.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Container Images"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Images used by the Tenant Deployment"})]}),(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"image",name:"image",onChange:function(e){U("imageName",e.target.value),K("image")},label:"MinIO's Image",value:a,error:D.image||"",placeholder:"E.g. minio/minio:RELEASE.2022-01-08T03-11-54Z"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"logSearchImage",name:"logSearchImage",onChange:function(e){U("logSearchImage",e.target.value),K("logSearchImage")},label:"Log Search API's Image",value:f,error:D.logSearchImage||"",placeholder:"E.g. minio/logsearchapi:v4.1.1"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"kesImage",name:"kesImage",onChange:function(e){U("kesImage",e.target.value),K("kesImage")},label:"KES Image",value:h,error:D.kesImage||"",placeholder:"E.g. minio/kes:v0.14.0"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"logSearchPostgresImage",name:"logSearchPostgresImage",onChange:function(e){U("logSearchPostgresImage",e.target.value),K("logSearchPostgresImage")},label:"Log Search Postgres's Image",value:x,error:D.logSearchPostgresImage||"",placeholder:"E.g. library/postgres:13"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"logSearchPostgresInitImage",name:"logSearchPostgresInitImage",onChange:function(e){U("logSearchPostgresInitImage",e.target.value),K("logSearchPostgresInitImage")},label:"Log Search Postgres's Init Image",value:v,error:D.logSearchPostgresInitImage||"",placeholder:"E.g. library/busybox:1.33.1"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"prometheusImage",name:"prometheusImage",onChange:function(e){U("prometheusImage",e.target.value),K("prometheusImage")},label:"Prometheus Image",value:j,error:D.prometheusImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"prometheusSidecarImage",name:"prometheusSidecarImage",onChange:function(e){U("prometheusSidecarImage",e.target.value),K("prometheusSidecarImage")},label:"Prometheus Sidecar Image",value:A,error:D.prometheusSidecarImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"prometheusInitImage",name:"prometheusInitImage",onChange:function(e){U("prometheusInitImage",e.target.value),K("prometheusInitImage")},label:"Prometheus Init Image",value:k,error:D.prometheusInitImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})})]}),n&&(0,T.jsx)(o.Fragment,{children:(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(N.Z,{value:"custom_docker_hub",id:"custom_docker_hub",name:"custom_docker_hub",checked:r,onChange:function(e){var t=e.target.checked;U("customDockerhub",t)},label:"Set/Update Image Registry"})})}),r&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"registry",name:"registry",onChange:function(e){U("imageRegistry",e.target.value)},label:"Endpoint",value:s,error:D.registry||"",placeholder:"E.g. https://index.docker.io/v1/",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"registryUsername",name:"registryUsername",onChange:function(e){U("imageRegistryUsername",e.target.value)},label:"Username",value:l,error:D.registryUsername||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"registryPassword",name:"registryPassword",onChange:function(e){U("imageRegistryPassword",e.target.value)},label:"Password",value:c,error:D.registryPassword||"",required:!0})})]})]})}))),te=n(25534),ne=n(29316),ae=n(3143),re=n.n(ae),ie=n(32120),se=n(23473),oe=n(60656),le=n(11387),ce={setErrorSnackMessage:y.Ih},ue=(0,u.$j)(null,ce),de=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)({wrapText:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"}},f.oO),f.Qw))}))(ue((function(e){var t=e.classes,n=e.namespace,a=e.addNamespaceOpen,r=e.closeAddNamespaceModalAndRefresh,s=e.setErrorSnackMessage,l=(0,o.useState)(!1),c=(0,i.Z)(l,2),u=c[0],d=c[1];(0,o.useEffect)((function(){u&&h.Z.invoke("POST","/api/v1/namespace",{name:n}).then((function(e){d(!1),r(!0)})).catch((function(e){d(!1),s(e)}))}),[u,r,n,s]);return(0,T.jsx)(oe.Z,{title:"New namespace",confirmText:"Create",confirmButtonProps:{color:"primary",variant:"contained"},isOpen:a,titleIcon:(0,T.jsx)(le.Ej,{}),isLoading:u,onConfirm:function(){d(!0)},onClose:function(){r(!1)},confirmationContent:(0,T.jsxs)(o.Fragment,{children:[u&&(0,T.jsx)(m.Z,{}),(0,T.jsxs)(se.Z,{children:["Are you sure you want to add a namespace called",(0,T.jsx)("br",{}),(0,T.jsx)("b",{className:t.wrapText,children:n}),"?"]})]})})}))),me=n(4182),pe=n(35044),ge=n(73481),fe=n(29399),he=n(95995),xe=(0,u.$j)((function(e){return{volumeSize:e.tenants.createTenant.fields.tenantSize.volumeSize,sizeFactor:e.tenants.createTenant.fields.tenantSize.sizeFactor,drivesPerServer:e.tenants.createTenant.fields.tenantSize.drivesPerServer,nodes:e.tenants.createTenant.fields.tenantSize.nodes,memoryNode:e.tenants.createTenant.fields.tenantSize.memoryNode,ecParity:e.tenants.createTenant.fields.tenantSize.ecParity,ecParityChoices:e.tenants.createTenant.fields.tenantSize.ecParityChoices,cleanECChoices:e.tenants.createTenant.fields.tenantSize.cleanECChoices,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,distribution:e.tenants.createTenant.fields.tenantSize.distribution,ecParityCalc:e.tenants.createTenant.fields.tenantSize.ecParityCalc,limitSize:e.tenants.createTenant.fields.tenantSize.limitSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,cpuToUse:e.tenants.createTenant.fields.tenantSize.cpuToUse,integrationSelection:e.tenants.createTenant.fields.tenantSize.integrationSelection}}),{updateAddField:j.HM,isPageValid:j.NO}),ve=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)({root:{margin:4},table:{"& .MuiTableCell-root":{fontSize:13}}},f.oO),f.AK))}))(xe((function(e){var t=e.classes,n=(e.updateAddField,e.isPageValid,e.volumeSize,e.sizeFactor,e.drivesPerServer,e.nodes),a=e.memoryNode,r=e.ecParity,i=(e.ecParityChoices,e.cleanECChoices,e.resourcesSize,e.distribution),s=e.ecParityCalc,l=(e.limitSize,e.selectedStorageClass,e.cpuToUse),c=e.integrationSelection,u=s.storageFactors.find((function(e){return e.erasureCode===r}));return(0,T.jsxs)("div",{className:t.root,children:[(0,T.jsx)("h4",{children:"Resource Allocation"}),(0,T.jsx)(he.Z,{}),(0,T.jsx)(me.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(pe.Z,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Number of Servers"}),(0,T.jsx)(ge.Z,{align:"right",children:parseInt(n)>0?n:"-"})]}),""===c.typeSelection&&""===c.storageClass&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Drives per Server"}),(0,T.jsx)(ge.Z,{align:"right",children:i?i.disks:"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Drive Capacity"}),(0,T.jsx)(ge.Z,{align:"right",children:i?(0,x.ae)(i.pvSize):"-"})]})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Total Volumes"}),(0,T.jsx)(ge.Z,{align:"right",children:i?i.persistentVolumes:"-"})]}),""===c.typeSelection&&""===c.storageClass&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Memory per Node"}),(0,T.jsxs)(ge.Z,{align:"right",children:[a," Gi"]})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{style:{borderBottom:0},scope:"row",children:"CPU Selection"}),(0,T.jsx)(ge.Z,{style:{borderBottom:0},align:"right",children:l})]})]})]})}),0===s.error&&u&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("h4",{children:"Erasure Code Configuration"}),(0,T.jsx)(he.Z,{}),(0,T.jsx)(me.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(pe.Z,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"EC Parity"}),(0,T.jsx)(ge.Z,{align:"right",children:""!==r?r:"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Raw Capacity"}),(0,T.jsx)(ge.Z,{align:"right",children:(0,x.ae)(s.rawCapacity)})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Usable Capacity"}),(0,T.jsx)(ge.Z,{align:"right",children:(0,x.ae)(u.maxCapacity)})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{style:{borderBottom:0},scope:"row",children:"Server Failures Tolerated"}),(0,T.jsx)(ge.Z,{style:{borderBottom:0},align:"right",children:i?Math.floor(u.maxFailureTolerations/i.disks):"-"})]})]})})]}),""!==c.typeSelection&&""!==c.storageClass&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("h4",{children:"Single Instance Configuration"}),(0,T.jsx)(he.Z,{}),(0,T.jsx)(me.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(pe.Z,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"CPU"}),(0,T.jsx)(ge.Z,{align:"right",children:0!==c.CPU?c.CPU:"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Memory"}),(0,T.jsx)(ge.Z,{align:"right",children:0!==c.memory?"".concat(c.memory," Gi"):"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Drives per Server"}),(0,T.jsx)(ge.Z,{align:"right",children:0!==c.drivesPerServer?"".concat(c.drivesPerServer):"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{style:{borderBottom:0},scope:"row",children:"Drive Size"}),(0,T.jsxs)(ge.Z,{style:{borderBottom:0},align:"right",children:[c.driveSize.driveSize,c.driveSize.sizeUnit]})]})]})})]})]})}))),ye=n(7262),Ce=(0,u.$j)((function(e){return{nodes:e.tenants.createTenant.fields.tenantSize.nodes,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,maxAllocatableResources:e.tenants.createTenant.fields.tenantSize.maxAllocatableResources,maxCPUsUse:e.tenants.createTenant.fields.tenantSize.maxCPUsUse,maxMemorySize:e.tenants.createTenant.fields.tenantSize.maxMemorySize,resourcesSpecifyLimit:e.tenants.createTenant.fields.tenantSize.resourcesSpecifyLimit,resourcesCPURequestError:e.tenants.createTenant.fields.tenantSize.resourcesCPURequestError,resourcesCPURequest:e.tenants.createTenant.fields.tenantSize.resourcesCPURequest,resourcesCPULimitError:e.tenants.createTenant.fields.tenantSize.resourcesCPULimitError,resourcesCPULimit:e.tenants.createTenant.fields.tenantSize.resourcesCPULimit,resourcesMemoryRequestError:e.tenants.createTenant.fields.tenantSize.resourcesMemoryRequestError,resourcesMemoryRequest:e.tenants.createTenant.fields.tenantSize.resourcesMemoryRequest,resourcesMemoryLimitError:e.tenants.createTenant.fields.tenantSize.resourcesMemoryLimitError,resourcesMemoryLimit:e.tenants.createTenant.fields.tenantSize.resourcesMemoryLimit}}),{updateAddField:j.HM,isPageValid:j.NO}),Se=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(Ce((function(e){var t=e.classes,n=e.updateAddField,a=e.isPageValid,r=e.nodes,i=e.resourcesSize,s=e.selectedStorageClass,l=(e.maxAllocatableResources,e.maxCPUsUse),u=e.maxMemorySize,m=e.resourcesSpecifyLimit,p=e.resourcesCPURequestError,g=e.resourcesCPURequest,f=e.resourcesCPULimitError,x=e.resourcesCPULimit,v=e.resourcesMemoryRequestError,y=e.resourcesMemoryRequest,C=e.resourcesMemoryLimitError,S=e.resourcesMemoryLimit,j=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]);return(0,o.useEffect)((function(){a("tenantSize",""===v&&""===C&&""===p&&""===f)}),[a,v,C,p,f]),(0,o.useEffect)((function(){h.Z.invoke("GET","api/v1/cluster/allocatable-resources?num_nodes=".concat(r)).then((function(e){j("maxAllocatableResources",e);var t=e,n=c()(t,"min_allocatable_mem",!1),a=c()(t,"min_allocatable_cpu",!1);if(!1===n||!1===a)return j("cpuToUse",0),j("maxMemorySize",""),void j("maxCPUsUse","");var r=(0,ye.floor)(e.mem_priority.max_allocatable_mem/1024/1024/1024);j("maxMemorySize",r.toString()),j("maxCPUsUse",e.cpu_priority.max_allocatable_cpu.toString());var i=c()(t,"cpu_priority.max_allocatable_cpu",0),s=Math.max(1,(0,ye.floor)(i/2));j("resourcesCPURequest",s);var o=Math.max(2,(0,ye.floor)(r/2));j("resourcesMemoryRequest",o)})).catch((function(e){j("maxMemorySize",0),j("resourcesCPURequest",""),console.error(e)}))}),[r,j]),(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Resources"}),(0,T.jsx)("span",{className:t.descriptionText,children:"You may specify the amount of CPU and Memory that MinIO servers should reserve on each node."})]})}),""!==i.error&&(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.error,children:i.error})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{label:"CPU Request",id:"resourcesCPURequest",name:"resourcesCPURequest",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesCPURequestError",""):isNaN(t)?j("resourcesCPURequestError","Invalid number"):t>parseInt(l)?j("resourcesCPURequestError","Request exceeds available cores (".concat(l,")")):e.target.validity.valid?j("resourcesCPURequestError",""):j("resourcesCPURequestError","Invalid configuration"),j("resourcesCPURequest",e.target.value)},value:g,disabled:""===s,max:l,error:p,pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"resourcesMemoryRequest",name:"resourcesMemoryRequest",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesMemoryRequestError",""):isNaN(t)?j("resourcesMemoryRequestError","Invalid number"):t>parseInt(u)?j("resourcesMemoryRequestError","Request exceeds available memory across ".concat(r," nodes (").concat(u,"Gi)")):t<2?j("resourcesMemoryRequestError","At least 2Gi must be requested"):e.target.validity.valid?j("resourcesMemoryRequestError",""):j("resourcesMemoryRequestError","Invalid configuration"),j("resourcesMemoryRequest",e.target.value)},label:"Memory Request [Gi]",value:y,disabled:""===s,error:v,pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(N.Z,{value:"resourcesSpecifyLimit",id:"resourcesSpecifyLimit",name:"resourcesSpecifyLimit",checked:m,onChange:function(e){var t=e.target.checked;j("resourcesSpecifyLimit",t)},label:"Specify Limit"})}),m&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{label:"CPU Limit",id:"resourcesCPULimit",name:"resourcesCPULimit",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesCPULimitError",""):isNaN(t)?j("resourcesCPULimitError","Invalid number"):e.target.validity.valid?j("resourcesCPULimitError",""):j("resourcesCPULimitError","Invalid configuration"),j("resourcesCPULimit",e.target.value)},value:x,disabled:""===s,max:l,error:f,pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"resourcesMemoryLimit",name:"resourcesMemoryLimit",onChange:function(e){var t=parseInt(e.target.value);console.log("value",t),""===e.target.value?j("resourcesMemoryLimitError",""):isNaN(t)?j("resourcesMemoryLimitError","Invalid number"):e.target.validity.valid?j("resourcesMemoryLimitError",""):j("resourcesMemoryLimitError","Invalid configuration"),j("resourcesMemoryLimit",e.target.value)},label:"Memory Limit [Gi]",value:S,disabled:""===s,error:C,pattern:"[0-9]*"})})]})]})}))),je=(0,u.$j)((function(e){return{volumeSize:e.tenants.createTenant.fields.tenantSize.volumeSize,sizeFactor:e.tenants.createTenant.fields.tenantSize.sizeFactor,drivesPerServer:e.tenants.createTenant.fields.tenantSize.drivesPerServer,nodes:e.tenants.createTenant.fields.tenantSize.nodes,memoryNode:e.tenants.createTenant.fields.tenantSize.memoryNode,ecParity:e.tenants.createTenant.fields.tenantSize.ecParity,ecParityChoices:e.tenants.createTenant.fields.tenantSize.ecParityChoices,cleanECChoices:e.tenants.createTenant.fields.tenantSize.cleanECChoices,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,distribution:e.tenants.createTenant.fields.tenantSize.distribution,ecParityCalc:e.tenants.createTenant.fields.tenantSize.ecParityCalc,limitSize:e.tenants.createTenant.limitSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{updateAddField:j.HM,isPageValid:j.NO}),Ze=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(je((function(e){var t=e.classes,n=e.updateAddField,a=e.isPageValid,r=e.volumeSize,s=e.sizeFactor,l=e.drivesPerServer,c=e.nodes,u=e.memoryNode,m=e.ecParity,p=e.ecParityChoices,g=e.cleanECChoices,f=e.resourcesSize,v=e.distribution,y=e.ecParityCalc,C=e.limitSize,S=e.selectedStorageClass,j=(0,o.useState)({}),Z=(0,i.Z)(j,2),b=Z[0],N=Z[1],k=(0,o.useState)(!1),R=(0,i.Z)(k,2),z=R[0],w=R[1],F=(0,o.useState)(""),D=(0,i.Z)(F,2),E=D[0],U=D[1],K=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]),L=function(e){N((0,_.h)(b,e))};return(0,o.useEffect)((function(){if(p.length>0&&""===v.error){var e=(0,x.ES)(g,v.persistentVolumes,v.pvSize,v.nodes);K("ecParityCalc",e),g.includes(m)&&""!==m||K("ecParity",e.defaultEC)}}),[m,p.length,v,g,K]),(0,o.useEffect)((function(){var e=r,t=s,n=(0,x.Pw)("12","Ti",!0),a={unit:t,value:e.toString()},i=(0,x.zg)(a,parseInt(c),parseInt(n),parseInt(l));K("distribution",i),w(!1),U("")}),[c,r,s,K,l]),(0,o.useEffect)((function(){var e=(0,x.Pw)(r,s,!0),t=(0,P.R)([{fieldKey:"nodes",required:!0,value:c,customValidation:z,customValidationMessage:E},{fieldKey:"volume_size",required:!0,value:r,customValidation:parseInt(e)<1073741824||parseInt(e)>C[S],customValidationMessage:"Volume size must be greater than 1Gi and less than ".concat((0,x.ae)(C[S],!0))},{fieldKey:"drivesps",required:!0,value:l,customValidation:parseInt(l)<1,customValidationMessage:"There must be at least one drive"}]);a("tenantSize",!("nodes"in t)&&!("volume_size"in t)&&!("drivesps"in t)&&""===v.error&&0===y.error&&""!==m),N(t)}),[c,r,s,u,v,y,f,C,S,a,z,E,l,m]),(0,o.useEffect)((function(){""===v.error&&""!==c.trim()&&0!==v.disks&&h.Z.invoke("GET","api/v1/get-parity/".concat(c,"/").concat(v.disks)).then((function(e){K("ecParityChoices",(0,ie.dv)(e)),K("cleanECChoices",e)})).catch((function(e){K("ecparityChoices",[]),a("tenantSize",!1),K("ecParity","")}))}),[v,a,K,c]),(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Capacity"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Please select the desired capacity"})]})}),""!==v.error&&(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.error,children:v.error})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"nodes",name:"nodes",onChange:function(e){e.target.validity.valid&&(K("nodes",e.target.value),L("nodes"))},label:"Number of Servers",disabled:""===S,value:c,min:"4",required:!0,error:b.nodes||"",pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"drivesps",name:"drivesps",onChange:function(e){e.target.validity.valid&&(K("drivesPerServer",e.target.value),L("drivesps"))},label:"Drives per Server",value:l,disabled:""===S,min:"1",required:!0,error:b.drivesps||"",pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)("div",{className:t.formFieldRow,children:(0,T.jsxs)("div",{className:t.compositeFieldContainer,children:[(0,T.jsx)(I.Z,{type:"number",id:"volume_size",name:"volume_size",onChange:function(e){K("volumeSize",e.target.value),L("volume_size")},label:"Total Size",value:r,disabled:""===S,required:!0,error:b.volume_size||"",min:"0"}),(0,T.jsx)("div",{className:t.compositeAddOn,children:(0,T.jsx)(A.Z,{label:"",id:"size_factor",name:"size_factor",value:s,disabled:""===S,onChange:function(e){K("sizeFactor",e.target.value)},options:(0,x.QU)()})})]})})})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:[(0,T.jsx)(A.Z,{id:"ec_parity",name:"ec_parity",onChange:function(e){K("ecParity",e.target.value)},label:"Erasure Code Parity",disabled:""===S,value:m,options:p}),(0,T.jsx)("span",{className:t.descriptionText,children:"Please select the desired parity. This setting will change the max usable capacity in the cluster"})]}),(0,T.jsx)(Se,{})]})}))),be=n(36222),_e=(0,u.$j)((function(e){return function(){var t=e.tenants.createTenant,n=t.fields.tenantSize,a=n.memoryNode,r=n.ecParityChoices,i=n.distribution,s=n.cleanECChoices,o=n.sizeFactor,l=n.ecParity,c=n.cpuToUse,u=n.integrationSelection,d=n.resourcesSize,m=n.drivesPerServer,p=n.maxCPUsUse,g=n.ecParityCalc;return{volumeSize:n.volumeSize,sizeFactor:o,drivesPerServer:m,nodes:n.nodes,memoryNode:a,ecParity:l,ecParityChoices:r,cleanECChoices:s,resourcesSize:d,distribution:i,ecParityCalc:g,cpuToUse:c,maxCPUsUse:p,integrationSelection:u,limitSize:t.limitSize,selectedStorageType:t.fields.nameTenant.selectedStorageType}}}),{updateAddField:j.HM,isPageValid:j.NO}),Pe=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(_e((function(e){var t=e.classes,n=e.updateAddField,a=e.isPageValid,r=e.volumeSize,s=e.sizeFactor,l=e.drivesPerServer,u=e.nodes,m=e.memoryNode,p=e.ecParity,g=e.ecParityChoices,f=e.cleanECChoices,v=e.resourcesSize,y=e.distribution,C=e.ecParityCalc,S=e.limitSize,j=e.cpuToUse,Z=e.selectedStorageType,b=e.maxCPUsUse,N=e.formToRender,k=e.integrationSelection,R=(0,o.useState)({}),z=(0,i.Z)(R,2),w=z[0],F=z[1],D=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]),E=(0,o.useCallback)((function(e,t){n("nameTenant",e,t)}),[n]);return(0,o.useEffect)((function(){if(g.length>0&&""===y.error){var e=(0,x.ES)(f,y.persistentVolumes,y.pvSize,y.nodes);D("ecParityCalc",e),f.includes(p)&&""!==p||D("ecParity",e.defaultEC)}}),[p,g,y,f,D]),(0,o.useEffect)((function(){if(void 0!==N&&parseInt(u)>=4){var e=Ie[N];if(Object.keys(e).length>0){var t=c()(e,"configurations",[]).find((function(e){return e.typeSelection===Z}));if(t){D("integrationSelection",t),E("selectedStorageClass",t.storageClass);var n={pvSize:parseInt((0,x.Pw)(t.driveSize.driveSize,t.driveSize.sizeUnit,!0),10),nodes:parseInt(u),disks:t.drivesPerServer,persistentVolumes:t.drivesPerServer*parseInt(u),error:""};D("distribution",n),D("resourcesCPURequest",Math.max(1,t.CPU/2)),D("resourcesMemoryRequest",Math.max(2,t.memory/2))}}}}),[u,Z,N,D,E]),(0,o.useEffect)((function(){var e=(0,P.R)([{fieldKey:"nodes",required:!0,value:u,customValidation:parseInt(u)<4,customValidationMessage:"Al least 4 servers must be selected"}]);a("tenantSize",!("nodes"in e)&&""===y.error&&0===C.error&&""===v.error&&""!==p&&parseInt(u)>=4),F(e)}),[u,r,s,m,y,C,v,S,Z,j,b,a,l,p]),(0,o.useEffect)((function(){0!==k.drivesPerServer&&""!==u.trim()&&h.Z.invoke("GET","api/v1/get-parity/".concat(u,"/").concat(k.drivesPerServer)).then((function(e){D("ecParityChoices",(0,ie.dv)(e)),D("cleanECChoices",e)})).catch((function(e){D("ecparityChoices",[]),a("tenantSize",!1),D("ecParity","")}))}),[k,u,a,D]),(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Tenant Size"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Please select the desired capacity"})]})}),""!==y.error&&(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.error,children:y.error})}),""!==v.error&&(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.error,children:v.error})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"nodes",name:"nodes",onChange:function(e){var t;e.target.validity.valid&&(D("nodes",e.target.value),t="nodes",F((0,_.h)(w,t)))},label:"Number of Servers",disabled:""===Z,value:u,min:"4",required:!0,error:w.nodes||"",pattern:"[0-9]*"})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:[(0,T.jsx)(A.Z,{id:"ec_parity",name:"ec_parity",onChange:function(e){D("ecParity",e.target.value)},label:"Erasure Code Parity",disabled:""===Z,value:p,options:g}),(0,T.jsx)("span",{className:t.descriptionText,children:"Please select the desired parity. This setting will change the max usable capacity in the cluster"})]})]})})));!function(e){e[e.aws=0]="aws",e[e.azure=1]="azure",e[e.gcp=2]="gcp",e[e.default=3]="default",e[e[void 0]=4]="undefined"}(r||(r={}));var Ne={"mp-mode-aws":r.aws,"mp-mode-azure":r.azure,"mp-mode-gcp":r.gcp},Ie=(a={},(0,be.Z)(a,r.aws,{variantSelectorLabel:"Storage Type",variantSelectorValues:[{label:"NVME",value:"nvme"},{label:"HDD",value:"hdd"}],configurations:[{typeSelection:"nvme",storageClass:"nvme-i3en-12xlarge",CPU:48,memory:384,driveSize:{driveSize:"7500",sizeUnit:"Gi"},drivesPerServer:4},{typeSelection:"hdd",storageClass:"hdd-d3en-12xlarge",CPU:8,memory:32,driveSize:{driveSize:"12.7",sizeUnit:"Ti"},drivesPerServer:4}],sizingComponent:(0,T.jsx)(Pe,{formToRender:r.aws})}),(0,be.Z)(a,r.azure,{variantSelectorLabel:"VM Size",variantSelectorValues:[{label:"Standard_L32s_v2",value:"Standard_L32s_v2"},{label:"Standard_L48s_v2",value:"Standard_L48s_v2"},{label:"Standard_L64s_v2",value:"Standard_L64s_v2"}],configurations:[{typeSelection:"Standard_L8s_v2",storageClass:"local-nvme",CPU:8,memory:64,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:1},{typeSelection:"Standard_L16s_v2",storageClass:"local-nvme",CPU:16,memory:128,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:2},{typeSelection:"Standard_L32s_v2",storageClass:"local-nvme",CPU:32,memory:256,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:4},{typeSelection:"Standard_L48s_v2",storageClass:"local-nvme",CPU:48,memory:384,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:6},{typeSelection:"Standard_L64s_v2",storageClass:"local-nvme",CPU:64,memory:512,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:8}],sizingComponent:(0,T.jsx)(Pe,{formToRender:r.azure})}),(0,be.Z)(a,r.gcp,{variantSelectorLabel:"Storage Type",variantSelectorValues:[{label:"SSD",value:"ssd"}],configurations:[{typeSelection:"ssd",storageClass:"local-ssd",CPU:32,memory:128,driveSize:{driveSize:"368",sizeUnit:"Gi"},drivesPerServer:24}],sizingComponent:(0,T.jsx)(Pe,{formToRender:r.gcp})}),(0,be.Z)(a,r.default,{}),(0,be.Z)(a,r.undefined,{}),a),Ae=(0,u.$j)((function(e){return{tenantName:e.tenants.createTenant.fields.nameTenant.tenantName,namespace:e.tenants.createTenant.fields.nameTenant.namespace,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,selectedStorageType:e.tenants.createTenant.fields.nameTenant.selectedStorageType,storageClasses:e.tenants.createTenant.storageClasses}}),{setModalErrorSnackMessage:y.zb,updateAddField:j.HM,setStorageClassesList:j.wZ,setLimitSize:j.DH,isPageValid:j.NO}),Te=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)({sizePreview:{position:"fixed",marginLeft:10,background:"#FFFFFF",border:"1px solid #EAEAEA",padding:2}},f.DF),f.oO),f.AK))}))(Ae((function(e){var t=e.classes,n=e.storageClasses,a=e.tenantName,s=e.namespace,l=e.selectedStorageClass,u=e.selectedStorageType,m=e.formToRender,p=void 0===m?r.default:m,g=e.updateAddField,f=e.setStorageClassesList,x=e.setLimitSize,v=e.isPageValid,y=e.setModalErrorSnackMessage,C=(0,o.useState)({}),S=(0,i.Z)(C,2),j=S[0],Z=S[1],N=(0,o.useState)(!0),k=(0,i.Z)(N,2),R=k[0],z=k[1],w=(0,o.useState)(!1),F=(0,i.Z)(w,2),D=F[0],E=F[1],U=(0,o.useState)(!1),K=(0,i.Z)(U,2),L=K[0],M=K[1],q=(0,o.useState)(!1),G=(0,i.Z)(q,2),O=G[0],B=G[1],$=(0,o.useCallback)((function(e,t){g("nameTenant",e,t)}),[g]),W=(0,o.useCallback)((function(){M(!1),h.Z.invoke("GET","/api/v1/namespaces/".concat(s,"/tenants")).then((function(e){var t=c()(e,"tenants",[]);if(t&&t.length>0)return z(!1),void E(!1);z(!0),h.Z.invoke("GET","/api/v1/namespaces/".concat(s,"/resourcequotas/").concat(s,"-storagequota")).then((function(e){var t=c()(e,"elements",[]);x((0,ie.OU)(e));var n=t.map((function(e){var t=c()(e,"name","").split(".storageclass.storage.k8s.io/requests.storage")[0];return{label:t,value:t}}));f(n);var a=n.findIndex((function(e){return e.value===l}));n.length>0&&-1===a?$("selectedStorageClass",n[0].value):0===n.length&&($("selectedStorageClass",""),f([])),E(!1)})).catch((function(e){E(!1),M(!0),$("selectedStorageClass",""),f([]),console.error("Namespace error: ",e)}))})).catch((function(e){y({errorMessage:"Error validating if namespace already has tenants",detailedError:e.detailedError})}))}),[s,x,y,f,$,l]),H=(0,o.useMemo)((function(){return re()(W,500)}),[W]);(0,o.useEffect)((function(){if(""!==s)return H(),E(!0),H.cancel}),[H,s]),(0,o.useEffect)((function(){var e=!1,t="";R||D?n.length<1&&R&&!D&&(e=!0,t="Please enter a valid namespace"):(e=!0,t="You can only create one tenant per namespace");var i=(0,P.R)([{fieldKey:"tenant-name",required:!0,pattern:/^[a-z0-9-]{3,63}$/,customPatternMessage:"Name only can contain lowercase letters, numbers and '-'. Min. Length: 3",value:a},{fieldKey:"namespace",required:!0,value:s,customValidation:e,customValidationMessage:t}]),o=!("tenant-name"in i)&&!("namespace"in i)&&(p===r.default&&n.length>0||p!==r.default&&""!==u);v("nameTenant",o),Z(i)}),[n,s,a,v,R,D,u,p]);var Y=function(e){Z((0,_.h)(j,e))};return(0,T.jsxs)(o.Fragment,{children:[O&&(0,T.jsx)(de,{addNamespaceOpen:O,closeAddNamespaceModalAndRefresh:function(e){B(!1),e&&H()},namespace:s}),(0,T.jsxs)(d.ZP,{container:!0,children:[(0,T.jsx)(d.ZP,{item:!0,xs:8,md:9,children:(0,T.jsx)(b.Z,{className:t.paperWrapper,sx:{minHeight:550},children:(0,T.jsxs)(d.ZP,{container:!0,children:[(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Name"}),(0,T.jsx)("span",{className:t.descriptionText,children:"How would you like to name this new tenant?"})]}),(0,T.jsx)("div",{className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"tenant-name",name:"tenant-name",onChange:function(e){$("tenantName",e.target.value),Y("tenant-name")},label:"Name",value:a,required:!0,error:j["tenant-name"]||""})})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"namespace",name:"namespace",onChange:function(e){$("namespace",e.target.value),Y("namespace")},label:"Namespace",value:s,error:j.namespace||"",overlayIcon:L?(0,T.jsx)(V.Z,{}):null,overlayAction:function(){B(!0)},required:!0})}),p===r.default?(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(A.Z,{id:"storage_class",name:"storage_class",onChange:function(e){$("selectedStorageClass",e.target.value)},label:"Storage Class",value:l,options:n,disabled:n.length<1})}):(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(A.Z,{id:"storage_type",name:"storage_type",onChange:function(e){$("selectedStorageType",e.target.value)},label:c()(Ie,"".concat(p,".variantSelectorLabel"),"Storage Type"),value:u,options:c()(Ie,"".concat(p,".variantSelectorValues"),[])})}),p===r.default?(0,T.jsx)(Ze,{}):c()(Ie,"".concat(p,".sizingComponent"),null)]})})}),(0,T.jsx)(d.ZP,{item:!0,xs:4,md:3,children:(0,T.jsx)("div",{className:t.sizePreview,children:(0,T.jsx)(ve,{})})})]})]})}))),ke=(0,u.$j)((function(e){return{features:e.console.session.features}}),null)((function(e){var t=e.features,n=(0,o.useState)(null),a=(0,i.Z)(n,2),s=a[0],l=a[1];return(0,o.useEffect)((function(){var e=r.default;t&&0!==t.length&&Object.keys(Ne).forEach((function(n){t.includes(n)&&(e=c()(Ne,n,r.default))}));l(e)}),[t]),null===s?null:(0,T.jsx)(Te,{formToRender:s})})),Re=(0,u.$j)((function(e){return{namespace:e.tenants.createTenant.fields.nameTenant.namespace,validPages:e.tenants.createTenant.validPages,fields:e.tenants.createTenant.fields,certificates:e.tenants.createTenant.certificates,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{setErrorSnackMessage:y.Ih,updateAddField:j.HM,resetAddTenantForm:j.dS}),ze=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)({pageBox:{border:"1px solid #EAEAEA"}},f.oO),f.AK),f.Je))}))(Re((function(e){var t=e.classes,n=e.fields,a=e.certificates,r=e.selectedStorageClass,l=e.namespace,u=e.validPages,p=e.setErrorSnackMessage,g=e.resetAddTenantForm,f=(0,o.useState)(!1),y=(0,i.Z)(f,2),j=y[0],Z=y[1],b=(0,o.useState)(null),_=(0,i.Z)(b,2),P=_[0],N=_[1],I=(0,o.useState)(!1),A=(0,i.Z)(I,2),k=A[0],z=A[1];(0,o.useEffect)((function(){var e=n.nameTenant.tenantName,t=n.nameTenant.selectedStorageClass,r=n.configure.imageName,i=n.configure.customDockerhub,o=n.configure.imageRegistry,u=n.configure.imageRegistryUsername,d=n.configure.imageRegistryPassword,m=n.configure.exposeMinIO,g=n.configure.exposeConsole,f=n.identityProvider.idpSelection,v=n.identityProvider.openIDConfigurationURL,y=n.identityProvider.openIDClientID,S=n.identityProvider.openIDClaimName,j=n.identityProvider.openIDCallbackURL,b=n.identityProvider.openIDScopes,_=n.identityProvider.openIDSecretID,P=n.identityProvider.ADURL,I=n.identityProvider.ADSkipTLS,A=n.identityProvider.ADServerInsecure,T=n.identityProvider.ADUserNameSearchFilter,R=n.identityProvider.ADGroupSearchBaseDN,w=n.identityProvider.ADGroupSearchFilter,F=n.identityProvider.ADGroupNameAttribute,D=n.identityProvider.ADUserDNs,E=n.identityProvider.ADUserNameFormat,U=n.identityProvider.ADLookupBindDN,K=n.identityProvider.ADLookupBindPassword,L=n.identityProvider.ADUserDNSearchBaseDN,M=n.identityProvider.ADUserDNSearchFilter,q=n.identityProvider.ADServerStartTLS,G=n.identityProvider.accessKeys,V=n.identityProvider.secretKeys,O=a.minioCertificates,B=a.caCertificates,$=a.consoleCaCertificates,W=a.consoleCertificate,H=a.serverCertificate,Y=a.clientCertificate,Q=a.vaultCertificate,X=a.vaultCA,J=a.gemaltoCA,ee=n.encryption.enableEncryption,te=n.encryption.encryptionType,ne=n.encryption.gemaltoEndpoint,ae=n.encryption.gemaltoToken,re=n.encryption.gemaltoDomain,ie=n.encryption.gemaltoRetry,se=n.encryption.awsEndpoint,oe=n.encryption.awsRegion,le=n.encryption.awsKMSKey,ce=n.encryption.awsAccessKey,ue=n.encryption.awsSecretKey,de=n.encryption.awsToken,me=n.encryption.vaultEndpoint,pe=n.encryption.vaultEngine,ge=n.encryption.vaultNamespace,fe=n.encryption.vaultPrefix,he=n.encryption.vaultAppRoleEngine,xe=n.encryption.vaultId,ve=n.encryption.vaultSecret,ye=n.encryption.vaultRetry,Ce=n.encryption.vaultPing,Se=n.encryption.azureEndpoint,je=n.encryption.azureTenantID,Ze=n.encryption.azureClientID,be=n.encryption.azureClientSecret,_e=n.encryption.gcpProjectID,Pe=n.encryption.gcpEndpoint,Ne=n.encryption.gcpClientEmail,Ie=n.encryption.gcpClientID,Ae=n.encryption.gcpPrivateKeyID,Te=n.encryption.gcpPrivateKey,ke=n.security.enableAutoCert,Re=n.security.enableTLS,ze=n.tenantSize.ecParity,we=n.tenantSize.distribution,Fe=n.configure.tenantCustom,De=n.configure.logSearchCustom,Ee=n.configure.prometheusCustom,Ue=n.configure.logSearchVolumeSize,Ke=n.configure.logSearchSelectedStorageClass,Le=n.configure.logSearchImage,Me=n.configure.kesImage,qe=n.configure.logSearchPostgresImage,Ge=n.configure.logSearchPostgresInitImage,Ve=n.configure.prometheusImage,Oe=n.configure.prometheusSidecarImage,Be=n.configure.prometheusInitImage,$e=n.configure.prometheusSelectedStorageClass,We=n.configure.prometheusVolumeSize,He=n.affinity.podAffinity,Ye=n.affinity.nodeSelectorLabels,Qe=n.affinity.withPodAntiAffinity,Xe=n.configure.tenantSecurityContext,Je=n.configure.logSearchSecurityContext,et=n.configure.logSearchPostgresSecurityContext,tt=n.configure.prometheusSecurityContext,nt=n.encryption.kesSecurityContext,at=n.encryption.replicas;if(k){var rt=(0,x.en)([]),it={};switch(He){case"default":it={affinity:(0,C.P)(e,rt)};break;case"nodeSelector":it={affinity:(0,C.q)(Ye,Qe,e,rt)}}var st=ze.split(":")[1],ot={name:e,namespace:l,access_key:"",secret_key:"",access_keys:[],secret_keys:[],enable_tls:Re&&ke,enable_console:!0,enable_prometheus:!0,service_name:"",image:r,expose_minio:m,expose_console:g,pools:[(0,s.Z)({name:rt,servers:we.nodes,volumes_per_server:we.disks,volume_configuration:{size:we.pvSize,storage_class_name:t},securityContext:Fe?Xe:null},it)],erasureCodingParity:parseInt(st,10)};""===n.tenantSize.resourcesCPURequest&&""===n.tenantSize.resourcesCPULimit&&""===n.tenantSize.resourcesMemoryRequest&&""===n.tenantSize.resourcesMemoryLimit||(ot.pools[0].resources={},""===n.tenantSize.resourcesCPURequest&&""===n.tenantSize.resourcesMemoryRequest||(ot.pools[0].resources.requests={},""!==n.tenantSize.resourcesCPURequest&&(ot.pools[0].resources.requests.cpu=parseInt(n.tenantSize.resourcesCPURequest)),""!==n.tenantSize.resourcesMemoryRequest&&(ot.pools[0].resources.requests.memory=parseInt(n.tenantSize.resourcesMemoryRequest))),""===n.tenantSize.resourcesCPULimit&&""===n.tenantSize.resourcesMemoryLimit||(ot.pools[0].resources.limits={},""!==n.tenantSize.resourcesCPULimit&&(ot.pools[0].resources.limits.cpu=parseInt(n.tenantSize.resourcesCPULimit)),""!==n.tenantSize.resourcesMemoryLimit&&(ot.pools[0].resources.limits.memory=parseInt(n.tenantSize.resourcesMemoryLimit)))),i&&(ot=(0,s.Z)((0,s.Z)({},ot),{},{image_registry:{registry:o,username:u,password:d}})),ot=De?(0,s.Z)((0,s.Z)({},ot),{},{logSearchConfiguration:{storageClass:"default"===Ke?"":Ke,storageSize:parseInt(Ue),image:Le,postgres_image:qe,postgres_init_image:Ge,securityContext:Je,postgres_securityContext:et}}):(0,s.Z)((0,s.Z)({},ot),{},{logSearchConfiguration:{image:Le,postgres_image:qe,postgres_init_image:Ge}}),ot=Ee?(0,s.Z)((0,s.Z)({},ot),{},{prometheusConfiguration:{storageClass:"default"===$e?"":$e,storageSize:parseInt(We),image:Ve,sidecar_image:Oe,init_image:Be,securityContext:tt}}):(0,s.Z)((0,s.Z)({},ot),{},{prometheusConfiguration:{image:Ve,sidecar_image:Oe,init_image:Be}});var lt=null,ct=null,ut=null,dt=null;if(B.length>0&&(ut={ca_certificates:B.map((function(e){return e.encoded_cert})).filter((function(e){return e}))}),$.length>0&&(dt={console_ca_certificates:$.map((function(e){return e.encoded_cert})).filter((function(e){return e}))}),Re&&O.length>0&&(lt={minio:O.map((function(e){return{crt:e.encoded_cert,key:e.encoded_key}})).filter((function(e){return e.crt&&e.key}))}),Re&&""!==W.encoded_cert&&""!==W.encoded_key&&(ct={console:{crt:W.encoded_cert,key:W.encoded_key}}),(lt||ct||ut||dt)&&(ot=(0,s.Z)((0,s.Z)({},ot),{},{tls:(0,s.Z)((0,s.Z)((0,s.Z)((0,s.Z)({},lt),ct),ut),dt)})),ee){var mt={};switch(te){case"gemalto":var pt={};""!==J.encoded_cert&&(pt={ca:J.encoded_cert}),mt={gemalto:{keysecure:{endpoint:ne,credentials:{token:ae,domain:re,retry:parseInt(ie)},tls:(0,s.Z)({},pt)}}};break;case"aws":mt={aws:{secretsmanager:{endpoint:se,region:oe,kmskey:le,credentials:{accesskey:ce,secretkey:ue,token:de}}}};break;case"azure":mt={azure:{keyvault:{endpoint:Se,credentials:{tenant_id:je,client_id:Ze,client_secret:be}}}};break;case"gcp":mt={gcp:{secretmanager:{project_id:_e,endpoint:Pe,credentials:{client_email:Ne,client_id:Ie,private_key_id:Ae,private_key:Te}}}};break;case"vault":var gt=null,ft=null;""!==Q.encoded_key&&""!==Q.encoded_cert&&(gt={key:Q.encoded_key,crt:Q.encoded_cert}),""!==X.encoded_cert&&(ft={ca:X.encoded_cert});var ht=null;(gt||X)&&(ht={tls:(0,s.Z)((0,s.Z)({},gt),ft)}),mt={vault:(0,s.Z)((0,s.Z)({endpoint:me,engine:pe,namespace:ge,prefix:fe,approle:{engine:he,id:xe,secret:ve,retry:parseInt(ye)}},ht),{},{status:{ping:parseInt(Ce)}})}}var xt={},vt={};""!==Y.encoded_key&&""!==Y.encoded_cert&&(vt={client:{key:Y.encoded_key,crt:Y.encoded_cert}}),""!==H.encoded_key&&""!==H.encoded_cert&&(xt={server:{key:H.encoded_key,crt:H.encoded_cert}}),ot=(0,s.Z)((0,s.Z)({},ot),{},{encryption:(0,s.Z)((0,s.Z)((0,s.Z)({replicas:at,securityContext:nt,image:Me},vt),xt),mt)})}var yt={};switch(f){case"Built-in":for(var Ct=[],St=0;St.\n\nimport React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { BackSettingsIcon } from \"../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n link: {\n display: \"flex\",\n alignItems: \"center\",\n textDecoration: \"none\",\n maxWidth: \"300px\",\n padding: \"2rem 2rem 0rem 2rem\",\n color: theme.palette.primary.light,\n fontSize: \".8rem\",\n \"&:hover\": {\n textDecoration: \"underline\",\n },\n },\n icon: {\n marginRight: \".3rem\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"& svg.min-icon\": {\n width: 12,\n },\n },\n });\n\ninterface IBackLink {\n classes: any;\n to: string;\n label: string;\n className?: any;\n executeOnClick?: () => void;\n}\n\nconst BackLink = ({ to, label, classes, className, executeOnClick }: IBackLink) => {\n return (\n {\n if (executeOnClick) {\n executeOnClick();\n }\n }}\n >\n
\n \n
\n
{label}
\n \n );\n};\n\nexport default withStyles(styles)(BackLink);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IconButton, IconButtonProps, Tooltip } from \"@mui/material\";\nimport clsx from \"clsx\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: 8,\n marginLeft: 8,\n borderWidth: 1,\n borderColor: \"#696969\",\n color: \"#696969\",\n borderStyle: \"solid\",\n borderRadius: 3,\n \"& .min-icon\": {\n // height: 20,\n width: 20,\n },\n \"& .MuiTouchRipple-root span\": {\n backgroundColor: theme.palette.primary.main,\n borderRadius: 3,\n opacity: 0.3,\n },\n \"&:disabled\": {\n color: \"#EBEBEB\",\n borderColor: \"#EBEBEB\",\n },\n },\n contained: {\n borderColor: theme.palette.primary.main,\n background: theme.palette.primary.main,\n color: \"white\",\n \"& .MuiTouchRipple-root span\": {\n backgroundColor: theme.palette.primary.dark,\n borderRadius: 3,\n opacity: 0.3,\n },\n \"&:hover\": {\n backgroundColor: theme.palette.primary.light,\n color: \"#FFF\",\n },\n },\n });\n\ninterface IBoxIconButton extends IconButtonProps {\n classes: any;\n children: any;\n variant?: \"outlined\" | \"contained\";\n tooltip?: string;\n}\n\nconst BoxIconButton = ({\n classes,\n children,\n variant = \"outlined\",\n tooltip,\n ...rest\n}: IBoxIconButton) => {\n const button = (\n \n {children}\n \n );\n\n if (tooltip && tooltip !== \"\") {\n return (\n \n {button}\n \n );\n }\n\n return button;\n};\n\nexport default withStyles(styles)(BoxIconButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { InputAdornment, OutlinedInput } from \"@mui/material\";\nimport BoxIconButton from \"../BoxIconButton/BoxIconButton\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { CopyIcon } from \"../../../../icons\";\nimport { fieldBasic } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n container: {\n display: \"flex\",\n flexFlow: \"column\",\n padding: \"20px 0 8px 0\",\n },\n inputWithCopy: {\n \"& .MuiInputBase-root \": {\n width: \"100%\",\n background: \"#FBFAFA\",\n \"& .MuiInputBase-input\": {\n height: \".8rem\",\n },\n \"& .MuiInputAdornment-positionEnd\": {\n marginRight: \".5rem\",\n \"& .MuiButtonBase-root\": {\n height: \"2rem\",\n },\n },\n },\n \"& .MuiButtonBase-root .min-icon\": {\n width: \".8rem\",\n height: \".8rem\",\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: \".8rem\",\n },\n });\n\nconst CredentialItem = ({\n label = \"\",\n value = \"\",\n classes = {},\n}: {\n label: string;\n value: string;\n classes: any;\n}) => {\n return (\n
\n );\n};\n\nexport default withStyles(styles)(CredentialItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { NewServiceAccount } from \"./types\";\nimport { Button } from \"@mui/material\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport CredentialItem from \"./CredentialItem\";\nimport WarnIcon from \"../../../../icons/WarnIcon\";\nimport { DownloadIcon, ServiceAccountCredentialsIcon } from \"../../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n credentialTitle: {\n padding: \".8rem 0 0 0\",\n fontWeight: 600,\n fontSize: \".9rem\",\n },\n buttonContainer: {\n textAlign: \"right\",\n marginTop: \"1rem\",\n },\n credentialsPanel: {\n overflowY: \"auto\",\n maxHeight: 350,\n },\n promptTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n buttonSpacer: {\n marginRight: \".9rem\",\n },\n promptIcon: {\n marginRight: \".1rem\",\n display: \"flex\",\n alignItems: \"center\",\n height: \"2rem\",\n width: \"2rem\",\n },\n });\n\ninterface ICredentialsPromptProps {\n classes: any;\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:text/plain;charset=utf-8,\" + encodeURIComponent(text)\n );\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n};\n\nconst CredentialsPrompt = ({\n classes,\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n return (\n {\n closeModal();\n }}\n title={\n
\n
New {entity} Created
\n
\n }\n titleIcon={}\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n
\n Please Login via the configured external identity provider.\n
\n ) : (\n
\n \n \n Write these down, as this is the only time the secret will be\n displayed.\n \n
\n )}\n \n \n \n\n {!idp && (\n \n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(CredentialsPrompt);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport clsx from \"clsx\";\nimport Grid from \"@mui/material/Grid\";\nimport RadioGroup from \"@mui/material/RadioGroup\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport Radio, { RadioProps } from \"@mui/material/Radio\";\nimport { InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { fieldBasic, radioIcons, tooltipHelper } from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\n\nexport interface SelectorTypes {\n label: string;\n value: string;\n}\n\ninterface RadioGroupProps {\n selectorOptions: SelectorTypes[];\n currentSelection: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n disableOptions?: boolean;\n onChange: (e: React.ChangeEvent) => void;\n classes: any;\n displayInColumn?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n optionLabel: {\n \"&.Mui-disabled\": {\n \"& .MuiFormControlLabel-label\": {\n color: \"#9c9c9c\",\n },\n },\n \"&:last-child\": {\n marginRight: 0,\n },\n \"& .MuiFormControlLabel-label\": {\n fontSize: 12,\n color: \"#07193E\",\n },\n },\n checkedOption: {\n \"& .MuiFormControlLabel-label\": {\n fontSize: 12,\n color: \"#07193E\",\n fontWeight: 700,\n },\n },\n });\n\nconst radioStyles = makeStyles({\n root: {\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n ...radioIcons,\n});\n\nconst RadioButton = (props: RadioProps) => {\n const classes = radioStyles();\n\n return (\n }\n icon={}\n {...props}\n />\n );\n};\n\nexport const RadioGroupSelector = ({\n selectorOptions = [],\n currentSelection,\n label,\n id,\n name,\n onChange,\n tooltip = \"\",\n disableOptions = false,\n classes,\n displayInColumn = false,\n}: RadioGroupProps) => {\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n \n
\n )}\n \n \n \n \n {selectorOptions.map((selectorOption) => {\n return (\n }\n label={selectorOption.label}\n disabled={disableOptions}\n className={clsx(classes.optionLabel, {\n [classes.checkedOption]:\n selectorOption.value === currentSelection,\n })}\n />\n );\n })}\n \n \n \n );\n};\n\nexport default withStyles(styles)(RadioGroupSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n FormControl,\n InputLabel,\n MenuItem,\n Select,\n InputBase,\n Tooltip,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\n\nexport interface selectorTypes {\n label: string;\n value: string;\n}\n\ninterface SelectProps {\n options: selectorTypes[];\n value: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n onChange: (e: SelectChangeEvent) => void;\n disabled?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n inputLabel: {\n ...fieldBasic.inputLabel,\n \"& span\": {\n fontWeight: \"normal\",\n },\n },\n fieldContainer: {\n display: \"flex\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n });\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n height: 38,\n lineHeight: 1,\n \"label + &\": {\n marginTop: theme.spacing(3),\n },\n },\n input: {\n height: 38,\n position: \"relative\",\n color: \"#07193E\",\n fontSize: 13,\n fontWeight: 600,\n padding: \"8px 20px 10px 10px\",\n border: \"#e5e5e5 1px solid\",\n borderRadius: 4,\n display: \"flex\",\n alignItems: \"center\",\n \"&:hover\": {\n borderColor: \"#393939\",\n },\n \"&:focus\": {\n backgroundColor: \"#fff\",\n },\n },\n })\n)(InputBase);\n\nconst SelectWrapper = ({\n classes,\n id,\n name,\n onChange,\n options,\n label,\n tooltip = \"\",\n value,\n disabled = false,\n}: SelectProps) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n \n
\n )}\n \n )}\n \n }\n disabled={disabled}\n >\n {options.map((option) => (\n \n ))}\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SelectWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IWizardButton, IWizardPage } from \"./types\";\nimport { Button, LinearProgress } from \"@mui/material\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n wizardStepContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n },\n wizardComponent: {\n overflowY: \"auto\",\n marginBottom: 10,\n height: \"calc(100vh - 100px - 80px)\",\n minHeight: 400,\n flex: 1,\n width: \"100%\",\n },\n wizardModal: {\n overflowY: \"auto\",\n marginBottom: 10,\n height: \"calc(100vh - 515px)\",\n },\n buttonsContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\" as const,\n padding: \"10px 0\",\n borderTop: \"#EAEAEA 1px solid\",\n \"& button\": {\n marginLeft: 10,\n },\n \"&.forModal\": {\n paddingBottom: 0,\n },\n },\n buttonInnerContainer: {\n width: \"100%\",\n textAlign: \"right\" as const,\n marginRight: 15,\n },\n });\n\nconst WizardPage = ({\n classes,\n page,\n pageChange,\n loadingStep,\n forModal,\n}: IWizardPage) => {\n const buttonAction = (btn: IWizardButton) => {\n switch (btn.type) {\n case \"next\":\n pageChange(\"++\");\n break;\n case \"back\":\n pageChange(\"--\");\n break;\n case \"to\":\n pageChange(btn.toPage || 0);\n break;\n case \"custom\":\n default:\n }\n\n if (btn.action) {\n btn.action(pageChange);\n }\n };\n\n return (\n
\n );\n};\n\nexport default withStyles(styles)(PageLayout);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { connect } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Typography from \"@mui/material/Typography\";\nimport IconButton from \"@mui/material/IconButton\";\nimport { AppState } from \"../../../../store\";\nimport OperatorLogo from \"../../../../icons/OperatorLogo\";\nimport ConsoleLogo from \"../../../../icons/ConsoleLogo\";\nimport { IFileItem } from \"../../ObjectBrowser/reducers\";\nimport { toggleList } from \"../../ObjectBrowser/actions\";\nimport { ObjectManagerIcon } from \"../../../../icons\";\n\ninterface IPageHeader {\n classes: any;\n sidebarOpen?: boolean;\n operatorMode?: boolean;\n label: any;\n actions?: any;\n managerObjects?: IFileItem[];\n toggleList: typeof toggleList;\n middleComponent?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n headerContainer: {\n width: \"100%\",\n minHeight: 79,\n display: \"flex\",\n backgroundColor: \"#fff\",\n left: 0,\n boxShadow: \"rgba(0,0,0,.08) 0 3px 10px\",\n },\n label: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n },\n labelStyle: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 700,\n marginLeft: 34,\n marginTop: 8,\n },\n rightMenu: {\n textAlign: \"right\",\n },\n logo: {\n marginLeft: 34,\n fill: theme.palette.primary.main,\n \"& .min-icon\": {\n width: 120,\n },\n },\n middleComponent: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n });\n\nconst PageHeader = ({\n classes,\n label,\n actions,\n sidebarOpen,\n operatorMode,\n managerObjects,\n toggleList,\n middleComponent,\n}: IPageHeader) => {\n return (\n \n \n {!sidebarOpen && (\n
\n {operatorMode ? : }\n
\n )}\n \n {label}\n \n \n {middleComponent && (\n \n {middleComponent}\n \n )}\n \n {actions && actions}\n {managerObjects && managerObjects.length > 0 && (\n {\n toggleList();\n }}\n size=\"large\"\n >\n \n \n )}\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n sidebarOpen: state.system.sidebarOpen,\n operatorMode: state.system.operatorMode,\n managerObjects: state.objectBrowser.objectManager.objectsToManage,\n});\n\nconst mapDispatchToProps = {\n toggleList,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(PageHeader));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Opts } from \"../../../ListTenants/utils\";\nimport TenantSizeMK from \"./TenantSizeMK\";\n\nexport enum IMkEnvs {\n \"aws\",\n \"azure\",\n \"gcp\",\n \"default\",\n undefined,\n}\n\nexport interface IDriveSizing {\n driveSize: string;\n sizeUnit: string;\n}\n\nexport interface IntegrationConfiguration {\n typeSelection: string;\n storageClass: string;\n CPU: number;\n memory: number;\n drivesPerServer: number;\n driveSize: IDriveSizing;\n}\n\nexport const AWSStorageTypes: Opts[] = [\n { label: \"NVME\", value: \"nvme\" },\n { label: \"HDD\", value: \"hdd\" },\n];\n\nexport const AzureStorageTypes: Opts[] = [\n { label: \"Standard_L32s_v2\", value: \"Standard_L32s_v2\" },\n { label: \"Standard_L48s_v2\", value: \"Standard_L48s_v2\" },\n { label: \"Standard_L64s_v2\", value: \"Standard_L64s_v2\" },\n];\n\nexport const resourcesConfigurations = {\n \"mp-mode-aws\": IMkEnvs.aws,\n \"mp-mode-azure\": IMkEnvs.azure,\n \"mp-mode-gcp\": IMkEnvs.gcp,\n};\n\nexport const AWSConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"nvme\",\n storageClass: \"nvme-i3en-12xlarge\",\n CPU: 48,\n memory: 384,\n driveSize: { driveSize: \"7500\", sizeUnit: \"Gi\" },\n drivesPerServer: 4,\n },\n {\n typeSelection: \"hdd\",\n storageClass: \"hdd-d3en-12xlarge\",\n CPU: 8,\n memory: 32,\n driveSize: { driveSize: \"12.7\", sizeUnit: \"Ti\" },\n drivesPerServer: 4,\n },\n];\n\nexport const AzureConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"Standard_L8s_v2\",\n storageClass: \"local-nvme\",\n CPU: 8,\n memory: 64,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 1,\n },\n {\n typeSelection: \"Standard_L16s_v2\",\n storageClass: \"local-nvme\",\n CPU: 16,\n memory: 128,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 2,\n },\n {\n typeSelection: \"Standard_L32s_v2\",\n storageClass: \"local-nvme\",\n CPU: 32,\n memory: 256,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 4,\n },\n {\n typeSelection: \"Standard_L48s_v2\",\n storageClass: \"local-nvme\",\n CPU: 48,\n memory: 384,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 6,\n },\n {\n typeSelection: \"Standard_L64s_v2\",\n storageClass: \"local-nvme\",\n CPU: 64,\n memory: 512,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 8,\n },\n];\n\nexport const GCPStorageTypes: Opts[] = [{ label: \"SSD\", value: \"ssd\" }];\n\nexport const GCPConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"ssd\",\n storageClass: \"local-ssd\",\n CPU: 32,\n memory: 128,\n driveSize: { driveSize: \"368\", sizeUnit: \"Gi\" },\n drivesPerServer: 24,\n },\n];\n\nexport const mkPanelConfigurations = {\n [IMkEnvs.aws]: {\n variantSelectorLabel: \"Storage Type\",\n variantSelectorValues: AWSStorageTypes,\n configurations: AWSConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.azure]: {\n variantSelectorLabel: \"VM Size\",\n variantSelectorValues: AzureStorageTypes,\n configurations: AzureConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.gcp]: {\n variantSelectorLabel: \"Storage Type\",\n variantSelectorValues: GCPStorageTypes,\n configurations: GCPConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.default]: {},\n [IMkEnvs.undefined]: {},\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, Paper, SelectChangeEvent } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { isPageValid, updateAddField } from \"../../actions\";\nimport { AppState } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport { ISecurityContext } from \"../../types\";\n\ninterface IConfigureProps {\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n storageClasses: any;\n classes: any;\n customImage: boolean;\n imageName: string;\n customDockerhub: boolean;\n imageRegistry: string;\n imageRegistryUsername: string;\n imageRegistryPassword: string;\n exposeMinIO: boolean;\n exposeConsole: boolean;\n prometheusCustom: boolean;\n tenantCustom: boolean;\n logSearchCustom: boolean;\n logSearchVolumeSize: string;\n logSearchSizeFactor: string;\n prometheusVolumeSize: string;\n prometheusSizeFactor: string;\n logSearchSelectedStorageClass: string;\n logSearchImage: string;\n kesImage: string;\n logSearchPostgresImage: string;\n logSearchPostgresInitImage: string;\n prometheusSelectedStorageClass: string;\n prometheusImage: string;\n prometheusSidecarImage: string;\n prometheusInitImage: string;\n selectedStorageClass: string;\n tenantSecurityContext: ISecurityContext;\n logSearchSecurityContext: ISecurityContext;\n logSearchPostgresSecurityContext: ISecurityContext;\n prometheusSecurityContext: ISecurityContext;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n tenantCustomizationFields: {\n marginLeft: 30, // 2nd Level(15+15)\n width: \"88%\",\n margin: \"auto\",\n },\n containerItem: {\n marginRight: 15,\n },\n fieldGroup: {\n ...createTenantCommon.fieldGroup,\n paddingTop: 15,\n marginBottom: 25,\n },\n responsiveSectionItem: {\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n\n \"& div > div\": {\n marginBottom: 5,\n marginRight: 0,\n },\n },\n },\n\n logSearchCustomFields: {\n marginLeft: 20, // 2nd Level(15+15)\n padding: 10,\n width: \"90%\",\n margin: \"auto\",\n },\n fieldSpaceTop: {\n marginTop: 15,\n },\n prometheusCustomFields: {\n marginLeft: 20, // 2nd Level(15+15)\n padding: 10,\n width: \"90%\",\n margin: \"auto\",\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Configure = ({\n classes,\n storageClasses,\n customImage,\n imageName,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n exposeMinIO,\n exposeConsole,\n prometheusCustom,\n tenantCustom,\n logSearchCustom,\n logSearchVolumeSize,\n logSearchSizeFactor,\n logSearchImage,\n kesImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n prometheusVolumeSize,\n prometheusSizeFactor,\n logSearchSelectedStorageClass,\n prometheusSelectedStorageClass,\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n updateAddField,\n isPageValid,\n selectedStorageClass,\n tenantSecurityContext,\n logSearchSecurityContext,\n logSearchPostgresSecurityContext,\n prometheusSecurityContext,\n}: IConfigureProps) => {\n const [validationErrors, setValidationErrors] = useState({});\n\n const configureSTClasses = [\n { label: \"Default\", value: \"default\" },\n ...storageClasses,\n ];\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n updateAddField(\"configure\", field, value);\n },\n [updateAddField]\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n if (tenantCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"tenant_securityContext_runAsUser\",\n required: true,\n value: tenantSecurityContext.runAsUser,\n customValidation:\n tenantSecurityContext.runAsUser === \"\" ||\n parseInt(tenantSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_runAsGroup\",\n required: true,\n value: tenantSecurityContext.runAsGroup,\n customValidation:\n tenantSecurityContext.runAsGroup === \"\" ||\n parseInt(tenantSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_fsGroup\",\n required: true,\n value: tenantSecurityContext.fsGroup,\n customValidation:\n tenantSecurityContext.fsGroup === \"\" ||\n parseInt(tenantSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n if (prometheusCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"prometheus_storage_class\",\n required: true,\n value: prometheusSelectedStorageClass,\n customValidation: prometheusSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"prometheus_volume_size\",\n required: true,\n value: prometheusVolumeSize,\n customValidation:\n prometheusVolumeSize === \"\" || parseInt(prometheusVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greater than 0`,\n },\n {\n fieldKey: \"prometheus_securityContext_runAsUser\",\n required: true,\n value: prometheusSecurityContext.runAsUser,\n customValidation:\n prometheusSecurityContext.runAsUser === \"\" ||\n parseInt(prometheusSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"prometheus_securityContext_runAsGroup\",\n required: true,\n value: prometheusSecurityContext.runAsGroup,\n customValidation:\n prometheusSecurityContext.runAsGroup === \"\" ||\n parseInt(prometheusSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"prometheus_securityContext_fsGroup\",\n required: true,\n value: prometheusSecurityContext.fsGroup,\n customValidation:\n prometheusSecurityContext.fsGroup === \"\" ||\n parseInt(prometheusSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n if (logSearchCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"log_search_storage_class\",\n required: true,\n value: logSearchSelectedStorageClass,\n customValidation: logSearchSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"log_search_volume_size\",\n required: true,\n value: logSearchVolumeSize,\n customValidation:\n logSearchVolumeSize === \"\" || parseInt(logSearchVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greatter than 0`,\n },\n {\n fieldKey: \"logSearch_securityContext_runAsUser\",\n required: true,\n value: logSearchSecurityContext.runAsUser,\n customValidation:\n logSearchSecurityContext.runAsUser === \"\" ||\n parseInt(logSearchSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"logSearch_securityContext_runAsGroup\",\n required: true,\n value: logSearchSecurityContext.runAsGroup,\n customValidation:\n logSearchSecurityContext.runAsGroup === \"\" ||\n parseInt(logSearchSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"logSearch_securityContext_fsGroup\",\n required: true,\n value: logSearchSecurityContext.fsGroup,\n customValidation:\n logSearchSecurityContext.fsGroup === \"\" ||\n parseInt(logSearchSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_runAsUser\",\n required: true,\n value: logSearchPostgresSecurityContext.runAsUser,\n customValidation:\n logSearchPostgresSecurityContext.runAsUser === \"\" ||\n parseInt(logSearchPostgresSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_runAsGroup\",\n required: true,\n value: prometheusSecurityContext.runAsGroup,\n customValidation:\n logSearchPostgresSecurityContext.runAsGroup === \"\" ||\n parseInt(logSearchPostgresSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_fsGroup\",\n required: true,\n value: logSearchPostgresSecurityContext.fsGroup,\n customValidation:\n logSearchPostgresSecurityContext.fsGroup === \"\" ||\n parseInt(logSearchPostgresSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n\n if (customImage) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"image\",\n required: false,\n value: imageName,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/minio:VERSION'\",\n },\n {\n fieldKey: \"logSearchImage\",\n required: false,\n value: logSearchImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/logsearchapi:VERSION'\",\n },\n {\n fieldKey: \"kesImage\",\n required: false,\n value: kesImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/kes:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresImage\",\n required: false,\n value: logSearchPostgresImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/postgres:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresInitImage\",\n required: false,\n value: logSearchPostgresInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n {\n fieldKey: \"prometheusImage\",\n required: false,\n value: prometheusImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/prometheus:VERSION'\",\n },\n {\n fieldKey: \"prometheusSidecarImage\",\n required: false,\n value: prometheusSidecarImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'project/container:VERSION'\",\n },\n {\n fieldKey: \"prometheusInitImage\",\n required: false,\n value: prometheusInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n ];\n if (customDockerhub) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"registry\",\n required: true,\n value: imageRegistry,\n },\n {\n fieldKey: \"registryUsername\",\n required: true,\n value: imageRegistryUsername,\n },\n {\n fieldKey: \"registryPassword\",\n required: true,\n value: imageRegistryPassword,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n isPageValid(\"configure\", Object.keys(commonVal).length === 0);\n\n setValidationErrors(commonVal);\n }, [\n customImage,\n imageName,\n logSearchImage,\n kesImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n isPageValid,\n prometheusCustom,\n tenantCustom,\n logSearchCustom,\n prometheusSelectedStorageClass,\n prometheusVolumeSize,\n logSearchSelectedStorageClass,\n logSearchVolumeSize,\n tenantSecurityContext,\n logSearchSecurityContext,\n logSearchPostgresSecurityContext,\n prometheusSecurityContext,\n ]);\n\n useEffect(() => {\n // New default values in current selection is invalid\n if (storageClasses.length > 0) {\n const filterPrometheus = storageClasses.filter(\n (item: any) => item.value === prometheusSelectedStorageClass\n );\n if (filterPrometheus.length === 0) {\n updateField(\"prometheusSelectedStorageClass\", \"default\");\n }\n\n const filterLogSearch = storageClasses.filter(\n (item: any) => item.value === logSearchSelectedStorageClass\n );\n if (filterLogSearch.length === 0) {\n updateField(\"logSearchSelectedStorageClass\", \"default\");\n }\n }\n }, [\n logSearchSelectedStorageClass,\n prometheusSelectedStorageClass,\n selectedStorageClass,\n storageClasses,\n updateField,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n
\n
Configure
\n \n Basic configurations for tenant management\n \n
\n
\n
Expose Services
\n \n Whether the tenant's services should request an external IP.\n \n
\n \n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n tenantName: state.tenants.createTenant.fields.nameTenant.tenantName,\n namespace: state.tenants.createTenant.fields.nameTenant.namespace,\n selectedStorageClass:\n state.tenants.createTenant.fields.nameTenant.selectedStorageClass,\n selectedStorageType:\n state.tenants.createTenant.fields.nameTenant.selectedStorageType,\n storageClasses: state.tenants.createTenant.storageClasses,\n});\n\nconst connector = connect(mapState, {\n setModalErrorSnackMessage,\n updateAddField,\n setStorageClassesList,\n setLimitSize,\n isPageValid,\n});\n\nexport default withStyles(styles)(connector(NameTenantMain));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport NameTenantMain from \"./NameTenantMain\";\nimport { IMkEnvs, resourcesConfigurations } from \"./utils\";\nimport { AppState } from \"../../../../../../store\";\n\ninterface ITenantResources {\n features?: string[];\n}\n\nconst TenantResources = ({ features }: ITenantResources) => {\n const [formRender, setFormRender] = useState(null);\n\n useEffect(() => {\n let setConfiguration = IMkEnvs.default;\n\n if (features && features.length !== 0) {\n const possibleVariables = Object.keys(resourcesConfigurations);\n\n possibleVariables.forEach((element) => {\n if (features.includes(element)) {\n setConfiguration = get(\n resourcesConfigurations,\n element,\n IMkEnvs.default\n );\n }\n });\n }\n\n setFormRender(setConfiguration);\n }, [features]);\n\n if (formRender === null) {\n return null;\n }\n\n return ;\n};\n\nconst mapState = (state: AppState) => ({\n features: state.console.session.features,\n});\n\nconst connector = connect(mapState, null);\n\nexport default connector(TenantResources);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { connect } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport { LinearProgress } from \"@mui/material\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n modalBasic,\n settingsCommon,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport api from \"../../../../common/api\";\nimport { generatePoolName } from \"../../../../common/utils\";\nimport GenericWizard from \"../../Common/GenericWizard/GenericWizard\";\nimport { IWizardElement } from \"../../Common/GenericWizard/types\";\nimport { NewServiceAccount } from \"../../Common/CredentialsPrompt/types\";\nimport { ErrorResponseHandler, ITenantCreator } from \"../../../../common/types\";\nimport { KeyPair } from \"../ListTenants/utils\";\n\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport { getDefaultAffinity, getNodeSelector } from \"../TenantDetails/utils\";\nimport CredentialsPrompt from \"../../Common/CredentialsPrompt/CredentialsPrompt\";\nimport { AppState } from \"../../../../store\";\nimport { ICertificatesItems, IFieldStore } from \"../types\";\nimport { resetAddTenantForm, updateAddField } from \"../actions\";\nimport Configure from \"./Steps/Configure\";\nimport IdentityProvider from \"./Steps/IdentityProvider\";\nimport Security from \"./Steps/Security\";\nimport Encryption from \"./Steps/Encryption\";\nimport Affinity from \"./Steps/Affinity\";\nimport PageHeader from \"../../Common/PageHeader/PageHeader\";\nimport history from \"../../../../history\";\nimport Images from \"./Steps/Images\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\nimport BackLink from \"../../../../common/BackLink\";\nimport TenantResources from \"./Steps/TenantResources/TenantResources\";\n\ninterface IAddTenantProps {\n setErrorSnackMessage: typeof setErrorSnackMessage;\n resetAddTenantForm: typeof resetAddTenantForm;\n updateAddField: typeof updateAddField;\n fields: IFieldStore;\n certificates: ICertificatesItems;\n selectedStorageClass: string;\n namespace: string;\n validPages: string[];\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n pageBox: {\n border: \"1px solid #EAEAEA\",\n },\n ...modalBasic,\n ...wizardCommon,\n ...settingsCommon,\n });\n\nconst AddTenant = ({\n classes,\n fields,\n certificates,\n selectedStorageClass,\n namespace,\n validPages,\n setErrorSnackMessage,\n resetAddTenantForm,\n}: IAddTenantProps) => {\n // Modals\n const [showNewCredentials, setShowNewCredentials] = useState(false);\n const [createdAccount, setCreatedAccount] =\n useState(null);\n\n // Fields\n const [addSending, setAddSending] = useState(false);\n\n /* Send Information to backend */\n useEffect(() => {\n const tenantName = fields.nameTenant.tenantName;\n const selectedStorageClass = fields.nameTenant.selectedStorageClass;\n const imageName = fields.configure.imageName;\n const customDockerhub = fields.configure.customDockerhub;\n const imageRegistry = fields.configure.imageRegistry;\n const imageRegistryUsername = fields.configure.imageRegistryUsername;\n const imageRegistryPassword = fields.configure.imageRegistryPassword;\n const exposeMinIO = fields.configure.exposeMinIO;\n const exposeConsole = fields.configure.exposeConsole;\n const idpSelection = fields.identityProvider.idpSelection;\n const openIDConfigurationURL =\n fields.identityProvider.openIDConfigurationURL;\n const openIDClientID = fields.identityProvider.openIDClientID;\n const openIDClaimName = fields.identityProvider.openIDClaimName;\n const openIDCallbackURL = fields.identityProvider.openIDCallbackURL;\n const openIDScopes = fields.identityProvider.openIDScopes;\n const openIDSecretID = fields.identityProvider.openIDSecretID;\n const ADURL = fields.identityProvider.ADURL;\n const ADSkipTLS = fields.identityProvider.ADSkipTLS;\n const ADServerInsecure = fields.identityProvider.ADServerInsecure;\n const ADUserNameSearchFilter =\n fields.identityProvider.ADUserNameSearchFilter;\n const ADGroupSearchBaseDN = fields.identityProvider.ADGroupSearchBaseDN;\n const ADGroupSearchFilter = fields.identityProvider.ADGroupSearchFilter;\n const ADGroupNameAttribute = fields.identityProvider.ADGroupNameAttribute;\n const ADUserDNs = fields.identityProvider.ADUserDNs;\n const ADUserNameFormat = fields.identityProvider.ADUserNameFormat;\n const ADLookupBindDN = fields.identityProvider.ADLookupBindDN;\n const ADLookupBindPassword = fields.identityProvider.ADLookupBindPassword;\n const ADUserDNSearchBaseDN = fields.identityProvider.ADUserDNSearchBaseDN;\n const ADUserDNSearchFilter = fields.identityProvider.ADUserDNSearchFilter;\n const ADServerStartTLS = fields.identityProvider.ADServerStartTLS;\n const accessKeys = fields.identityProvider.accessKeys;\n const secretKeys = fields.identityProvider.secretKeys;\n const minioCertificates = certificates.minioCertificates;\n const caCertificates = certificates.caCertificates;\n const consoleCaCertificates = certificates.consoleCaCertificates;\n const consoleCertificate = certificates.consoleCertificate;\n const serverCertificate = certificates.serverCertificate;\n const clientCertificate = certificates.clientCertificate;\n const vaultCertificate = certificates.vaultCertificate;\n const vaultCA = certificates.vaultCA;\n const gemaltoCA = certificates.gemaltoCA;\n const enableEncryption = fields.encryption.enableEncryption;\n const encryptionType = fields.encryption.encryptionType;\n const gemaltoEndpoint = fields.encryption.gemaltoEndpoint;\n const gemaltoToken = fields.encryption.gemaltoToken;\n const gemaltoDomain = fields.encryption.gemaltoDomain;\n const gemaltoRetry = fields.encryption.gemaltoRetry;\n const awsEndpoint = fields.encryption.awsEndpoint;\n const awsRegion = fields.encryption.awsRegion;\n const awsKMSKey = fields.encryption.awsKMSKey;\n const awsAccessKey = fields.encryption.awsAccessKey;\n const awsSecretKey = fields.encryption.awsSecretKey;\n const awsToken = fields.encryption.awsToken;\n const vaultEndpoint = fields.encryption.vaultEndpoint;\n const vaultEngine = fields.encryption.vaultEngine;\n const vaultNamespace = fields.encryption.vaultNamespace;\n const vaultPrefix = fields.encryption.vaultPrefix;\n const vaultAppRoleEngine = fields.encryption.vaultAppRoleEngine;\n const vaultId = fields.encryption.vaultId;\n const vaultSecret = fields.encryption.vaultSecret;\n const vaultRetry = fields.encryption.vaultRetry;\n const vaultPing = fields.encryption.vaultPing;\n const azureEndpoint = fields.encryption.azureEndpoint;\n const azureTenantID = fields.encryption.azureTenantID;\n const azureClientID = fields.encryption.azureClientID;\n const azureClientSecret = fields.encryption.azureClientSecret;\n const gcpProjectID = fields.encryption.gcpProjectID;\n const gcpEndpoint = fields.encryption.gcpEndpoint;\n const gcpClientEmail = fields.encryption.gcpClientEmail;\n const gcpClientID = fields.encryption.gcpClientID;\n const gcpPrivateKeyID = fields.encryption.gcpPrivateKeyID;\n const gcpPrivateKey = fields.encryption.gcpPrivateKey;\n const enableAutoCert = fields.security.enableAutoCert;\n const enableTLS = fields.security.enableTLS;\n const ecParity = fields.tenantSize.ecParity;\n const distribution = fields.tenantSize.distribution;\n const tenantCustom = fields.configure.tenantCustom;\n const logSearchCustom = fields.configure.logSearchCustom;\n const prometheusCustom = fields.configure.prometheusCustom;\n const logSearchVolumeSize = fields.configure.logSearchVolumeSize;\n const logSearchSelectedStorageClass =\n fields.configure.logSearchSelectedStorageClass;\n const logSearchImage = fields.configure.logSearchImage;\n const kesImage = fields.configure.kesImage;\n const logSearchPostgresImage = fields.configure.logSearchPostgresImage;\n const logSearchPostgresInitImage =\n fields.configure.logSearchPostgresInitImage;\n const prometheusImage = fields.configure.prometheusImage;\n const prometheusSidecarImage = fields.configure.prometheusSidecarImage;\n const prometheusInitImage = fields.configure.prometheusInitImage;\n const prometheusSelectedStorageClass =\n fields.configure.prometheusSelectedStorageClass;\n const prometheusVolumeSize = fields.configure.prometheusVolumeSize;\n const affinityType = fields.affinity.podAffinity;\n const nodeSelectorLabels = fields.affinity.nodeSelectorLabels;\n const withPodAntiAffinity = fields.affinity.withPodAntiAffinity;\n\n const tenantSecurityContext = fields.configure.tenantSecurityContext;\n const logSearchSecurityContext = fields.configure.logSearchSecurityContext;\n const logSearchPostgresSecurityContext =\n fields.configure.logSearchPostgresSecurityContext;\n const prometheusSecurityContext =\n fields.configure.prometheusSecurityContext;\n const kesSecurityContext = fields.encryption.kesSecurityContext;\n const kesReplicas = fields.encryption.replicas;\n\n if (addSending) {\n const poolName = generatePoolName([]);\n\n let affinityObject = {};\n\n switch (affinityType) {\n case \"default\":\n affinityObject = {\n affinity: getDefaultAffinity(tenantName, poolName),\n };\n break;\n case \"nodeSelector\":\n affinityObject = {\n affinity: getNodeSelector(\n nodeSelectorLabels,\n withPodAntiAffinity,\n tenantName,\n poolName\n ),\n };\n break;\n }\n\n const erasureCode = ecParity.split(\":\")[1];\n\n let dataSend: ITenantCreator = {\n name: tenantName,\n namespace: namespace,\n access_key: \"\",\n secret_key: \"\",\n access_keys: [],\n secret_keys: [],\n enable_tls: enableTLS && enableAutoCert,\n enable_console: true,\n enable_prometheus: true,\n service_name: \"\",\n image: imageName,\n expose_minio: exposeMinIO,\n expose_console: exposeConsole,\n pools: [\n {\n name: poolName,\n servers: distribution.nodes,\n volumes_per_server: distribution.disks,\n volume_configuration: {\n size: distribution.pvSize,\n storage_class_name: selectedStorageClass,\n },\n securityContext: tenantCustom ? tenantSecurityContext : null,\n ...affinityObject,\n },\n ],\n erasureCodingParity: parseInt(erasureCode, 10),\n };\n\n // Set Resources\n if (\n fields.tenantSize.resourcesCPURequest !== \"\" ||\n fields.tenantSize.resourcesCPULimit !== \"\" ||\n fields.tenantSize.resourcesMemoryRequest !== \"\" ||\n fields.tenantSize.resourcesMemoryLimit !== \"\"\n ) {\n dataSend.pools[0].resources = {};\n // requests\n if (\n fields.tenantSize.resourcesCPURequest !== \"\" ||\n fields.tenantSize.resourcesMemoryRequest !== \"\"\n ) {\n dataSend.pools[0].resources.requests = {};\n if (fields.tenantSize.resourcesCPURequest !== \"\") {\n dataSend.pools[0].resources.requests.cpu = parseInt(\n fields.tenantSize.resourcesCPURequest\n );\n }\n if (fields.tenantSize.resourcesMemoryRequest !== \"\") {\n dataSend.pools[0].resources.requests.memory = parseInt(\n fields.tenantSize.resourcesMemoryRequest\n );\n }\n }\n // limits\n if (\n fields.tenantSize.resourcesCPULimit !== \"\" ||\n fields.tenantSize.resourcesMemoryLimit !== \"\"\n ) {\n dataSend.pools[0].resources.limits = {};\n if (fields.tenantSize.resourcesCPULimit !== \"\") {\n dataSend.pools[0].resources.limits.cpu = parseInt(\n fields.tenantSize.resourcesCPULimit\n );\n }\n if (fields.tenantSize.resourcesMemoryLimit !== \"\") {\n dataSend.pools[0].resources.limits.memory = parseInt(\n fields.tenantSize.resourcesMemoryLimit\n );\n }\n }\n }\n if (customDockerhub) {\n dataSend = {\n ...dataSend,\n image_registry: {\n registry: imageRegistry,\n username: imageRegistryUsername,\n password: imageRegistryPassword,\n },\n };\n }\n\n if (logSearchCustom) {\n dataSend = {\n ...dataSend,\n logSearchConfiguration: {\n storageClass:\n logSearchSelectedStorageClass === \"default\"\n ? \"\"\n : logSearchSelectedStorageClass,\n storageSize: parseInt(logSearchVolumeSize),\n image: logSearchImage,\n postgres_image: logSearchPostgresImage,\n postgres_init_image: logSearchPostgresInitImage,\n securityContext: logSearchSecurityContext,\n postgres_securityContext: logSearchPostgresSecurityContext,\n },\n };\n } else {\n dataSend = {\n ...dataSend,\n logSearchConfiguration: {\n image: logSearchImage,\n postgres_image: logSearchPostgresImage,\n postgres_init_image: logSearchPostgresInitImage,\n },\n };\n }\n\n if (prometheusCustom) {\n dataSend = {\n ...dataSend,\n prometheusConfiguration: {\n storageClass:\n prometheusSelectedStorageClass === \"default\"\n ? \"\"\n : prometheusSelectedStorageClass,\n storageSize: parseInt(prometheusVolumeSize),\n image: prometheusImage,\n sidecar_image: prometheusSidecarImage,\n init_image: prometheusInitImage,\n securityContext: prometheusSecurityContext,\n },\n };\n } else {\n dataSend = {\n ...dataSend,\n prometheusConfiguration: {\n image: prometheusImage,\n sidecar_image: prometheusSidecarImage,\n init_image: prometheusInitImage,\n },\n };\n }\n\n let tenantCerts: any = null;\n let consoleCerts: any = null;\n let caCerts: any = null;\n let consoleCaCerts: any = null;\n\n if (caCertificates.length > 0) {\n caCerts = {\n ca_certificates: caCertificates\n .map((keyPair: KeyPair) => keyPair.encoded_cert)\n .filter((keyPair) => keyPair),\n };\n }\n\n if (consoleCaCertificates.length > 0) {\n consoleCaCerts = {\n console_ca_certificates: consoleCaCertificates\n .map((keyPair: KeyPair) => keyPair.encoded_cert)\n .filter((keyPair) => keyPair),\n };\n }\n\n if (enableTLS && minioCertificates.length > 0) {\n tenantCerts = {\n minio: minioCertificates\n .map((keyPair: KeyPair) => ({\n crt: keyPair.encoded_cert,\n key: keyPair.encoded_key,\n }))\n .filter((keyPair) => keyPair.crt && keyPair.key),\n };\n }\n\n if (\n enableTLS &&\n consoleCertificate.encoded_cert !== \"\" &&\n consoleCertificate.encoded_key !== \"\"\n ) {\n consoleCerts = {\n console: {\n crt: consoleCertificate.encoded_cert,\n key: consoleCertificate.encoded_key,\n },\n };\n }\n\n if (tenantCerts || consoleCerts || caCerts || consoleCaCerts) {\n dataSend = {\n ...dataSend,\n tls: {\n ...tenantCerts,\n ...consoleCerts,\n ...caCerts,\n ...consoleCaCerts,\n },\n };\n }\n\n if (enableEncryption) {\n let insertEncrypt = {};\n\n switch (encryptionType) {\n case \"gemalto\":\n let gemaltoCAIntroduce = {};\n\n if (gemaltoCA.encoded_cert !== \"\") {\n gemaltoCAIntroduce = {\n ca: gemaltoCA.encoded_cert,\n };\n }\n insertEncrypt = {\n gemalto: {\n keysecure: {\n endpoint: gemaltoEndpoint,\n credentials: {\n token: gemaltoToken,\n domain: gemaltoDomain,\n retry: parseInt(gemaltoRetry),\n },\n tls: {\n ...gemaltoCAIntroduce,\n },\n },\n },\n };\n break;\n case \"aws\":\n insertEncrypt = {\n aws: {\n secretsmanager: {\n endpoint: awsEndpoint,\n region: awsRegion,\n kmskey: awsKMSKey,\n credentials: {\n accesskey: awsAccessKey,\n secretkey: awsSecretKey,\n token: awsToken,\n },\n },\n },\n };\n break;\n case \"azure\":\n insertEncrypt = {\n azure: {\n keyvault: {\n endpoint: azureEndpoint,\n credentials: {\n tenant_id: azureTenantID,\n client_id: azureClientID,\n client_secret: azureClientSecret,\n },\n },\n },\n };\n break;\n case \"gcp\":\n insertEncrypt = {\n gcp: {\n secretmanager: {\n project_id: gcpProjectID,\n endpoint: gcpEndpoint,\n credentials: {\n client_email: gcpClientEmail,\n client_id: gcpClientID,\n private_key_id: gcpPrivateKeyID,\n private_key: gcpPrivateKey,\n },\n },\n },\n };\n break;\n case \"vault\":\n let vaultKeyPair = null;\n let vaultCAInsert = null;\n if (\n vaultCertificate.encoded_key !== \"\" &&\n vaultCertificate.encoded_cert !== \"\"\n ) {\n vaultKeyPair = {\n key: vaultCertificate.encoded_key,\n crt: vaultCertificate.encoded_cert,\n };\n }\n if (vaultCA.encoded_cert !== \"\") {\n vaultCAInsert = {\n ca: vaultCA.encoded_cert,\n };\n }\n let vaultTLS = null;\n if (vaultKeyPair || vaultCA) {\n vaultTLS = {\n tls: {\n ...vaultKeyPair,\n ...vaultCAInsert,\n },\n };\n }\n insertEncrypt = {\n vault: {\n endpoint: vaultEndpoint,\n engine: vaultEngine,\n namespace: vaultNamespace,\n prefix: vaultPrefix,\n approle: {\n engine: vaultAppRoleEngine,\n id: vaultId,\n secret: vaultSecret,\n retry: parseInt(vaultRetry),\n },\n ...vaultTLS,\n status: {\n ping: parseInt(vaultPing),\n },\n },\n };\n break;\n }\n\n let encryptionServerKeyPair: any = {};\n let encryptionClientKeyPair: any = {};\n\n if (\n clientCertificate.encoded_key !== \"\" &&\n clientCertificate.encoded_cert !== \"\"\n ) {\n encryptionClientKeyPair = {\n client: {\n key: clientCertificate.encoded_key,\n crt: clientCertificate.encoded_cert,\n },\n };\n }\n\n if (\n serverCertificate.encoded_key !== \"\" &&\n serverCertificate.encoded_cert !== \"\"\n ) {\n encryptionServerKeyPair = {\n server: {\n key: serverCertificate.encoded_key,\n crt: serverCertificate.encoded_cert,\n },\n };\n }\n\n dataSend = {\n ...dataSend,\n encryption: {\n replicas: kesReplicas,\n securityContext: kesSecurityContext,\n image: kesImage,\n ...encryptionClientKeyPair,\n ...encryptionServerKeyPair,\n ...insertEncrypt,\n },\n };\n }\n\n let dataIDP: any = {};\n switch (idpSelection) {\n case \"Built-in\":\n let keyarray = [];\n for (let i = 0; i < accessKeys.length; i++) {\n keyarray.push({\n access_key: accessKeys[i],\n secret_key: secretKeys[i],\n });\n }\n dataIDP = {\n keys: keyarray,\n };\n break;\n case \"OpenID\":\n dataIDP = {\n oidc: {\n configuration_url: openIDConfigurationURL,\n client_id: openIDClientID,\n secret_id: openIDSecretID,\n claim_name: openIDClaimName,\n callback_url: openIDCallbackURL,\n scopes: openIDScopes,\n },\n };\n break;\n case \"AD\":\n dataIDP = {\n active_directory: {\n url: ADURL,\n skip_tls_verification: ADSkipTLS,\n server_insecure: ADServerInsecure,\n username_format: ADUserNameFormat,\n username_search_filter: ADUserNameSearchFilter,\n group_search_base_dn: ADGroupSearchBaseDN,\n group_search_filter: ADGroupSearchFilter,\n group_name_attribute: ADGroupNameAttribute,\n user_dns: ADUserDNs,\n lookup_bind_dn: ADLookupBindDN,\n lookup_bind_password: ADLookupBindPassword,\n user_dn_search_base_dn: ADUserDNSearchBaseDN,\n user_dn_search_filter: ADUserDNSearchFilter,\n server_start_tls: ADServerStartTLS,\n },\n };\n break;\n }\n\n dataSend = {\n ...dataSend,\n idp: { ...dataIDP },\n };\n api\n .invoke(\"POST\", `/api/v1/tenants`, dataSend)\n .then((res) => {\n const consoleSAList = get(res, \"console\", []);\n\n let newSrvAcc: NewServiceAccount = {\n idp: get(res, \"externalIDP\", false),\n console: [],\n };\n\n if (consoleSAList) {\n if (Array.isArray(consoleSAList)) {\n const consoleItem = consoleSAList.map((consoleKey) => {\n return {\n accessKey: consoleKey.access_key,\n secretKey: consoleKey.secret_key,\n };\n });\n\n newSrvAcc.console = consoleItem;\n } else {\n newSrvAcc = {\n console: {\n accessKey: res.console.access_key,\n secretKey: res.console.secret_key,\n },\n };\n }\n }\n setAddSending(false);\n setShowNewCredentials(true);\n setCreatedAccount(newSrvAcc);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddSending(false);\n setErrorSnackMessage(err);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [addSending]);\n\n const cancelButton = {\n label: \"Cancel\",\n type: \"other\",\n enabled: true,\n action: () => {\n resetAddTenantForm();\n history.push(\"/tenants\");\n },\n };\n const requiredPages = [\n \"nameTenant\",\n \"tenantSize\",\n \"configure\",\n \"affinity\",\n \"identityProvider\",\n \"security\",\n \"encryption\",\n ];\n const createButton = {\n label: \"Create\",\n type: \"submit\",\n enabled:\n !addSending &&\n selectedStorageClass !== \"\" &&\n requiredPages.every((v) => validPages.includes(v)),\n action: () => {\n setAddSending(true);\n },\n };\n\n const wizardSteps: IWizardElement[] = [\n {\n label: \"Setup\",\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Configure\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Images\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Pod Placement\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Identity Provider\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Security\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Encryption\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n ];\n\n let filteredWizardSteps = wizardSteps;\n\n const closeCredentialsModal = () => {\n resetAddTenantForm();\n history.push(\"/tenants\");\n };\n\n return (\n \n {showNewCredentials && (\n {\n closeCredentialsModal();\n }}\n entity=\"Tenant\"\n />\n )}\n \n \n \n {addSending && (\n \n \n \n )}\n \n \n \n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n namespace: state.tenants.createTenant.fields.nameTenant.namespace,\n validPages: state.tenants.createTenant.validPages,\n fields: state.tenants.createTenant.fields,\n certificates: state.tenants.createTenant.certificates,\n selectedStorageClass:\n state.tenants.createTenant.fields.nameTenant.selectedStorageClass,\n});\n\nconst connector = connect(mapState, {\n setErrorSnackMessage,\n updateAddField,\n resetAddTenantForm,\n});\n\nexport default withStyles(styles)(connector(AddTenant));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport get from \"lodash/get\";\nimport { ITenant } from \"./types\";\n\nexport interface Opts {\n label: string;\n value: string;\n}\n\nexport interface IQuotaElement {\n hard: number;\n name: string;\n}\n\nexport interface IQuotas {\n elements?: IQuotaElement[];\n name: string;\n}\n\nexport const minMemReq = 2147483648;\n\nexport interface KeyPair {\n id: string;\n encoded_cert: string;\n encoded_key: string;\n cert: string;\n key: string;\n}\n\nexport const ecListTransform = (ecList: string[]): Opts[] => {\n return ecList.map((value) => {\n return { label: value, value };\n });\n};\n\nexport const getLimitSizes = (resourceQuotas: IQuotas) => {\n const quotas: IQuotaElement[] = get(resourceQuotas, \"elements\", []);\n\n const returnQuotas: any = {};\n\n quotas.forEach((rsQuota) => {\n const stCName = rsQuota.name.split(\n \".storageclass.storage.k8s.io/requests.storage\"\n )[0];\n const hard = get(rsQuota, \"hard\", 0);\n const used = get(rsQuota, \"used\", 0);\n\n returnQuotas[stCName] = hard - used;\n });\n\n return returnQuotas;\n};\n\nexport const tenantIsOnline = (tenant: ITenant): boolean => {\n if (tenant.currentState === \"\") {\n return false;\n }\n if (\n !tenant.status &&\n tenant.health_status !== \"green\" &&\n tenant.health_status !== \"yellow\"\n ) {\n return false;\n }\n if (\n tenant.status &&\n tenant.status.health_status !== \"green\" &&\n tenant.status.health_status !== \"yellow\"\n ) {\n return false;\n }\n return true;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport { IAffinityModel } from \"../../../../common/types\";\n\nexport const getDefaultAffinity = (tenantName: string, poolName: string) => {\n const defaultAffinity: IAffinityModel = {\n podAntiAffinity: {\n requiredDuringSchedulingIgnoredDuringExecution: [\n {\n labelSelector: {\n matchExpressions: [\n {\n key: \"v1.min.io/tenant\",\n operator: \"In\",\n values: [tenantName],\n },\n {\n key: \"v1.min.io/pool\",\n operator: \"In\",\n values: [poolName],\n },\n ],\n },\n topologyKey: \"kubernetes.io/hostname\",\n },\n ],\n },\n };\n return defaultAffinity;\n};\n\nexport const getNodeSelector = (\n labels: string,\n withPodAntiAffinity: boolean,\n tenantName: string,\n poolName: string\n) => {\n // Labels in the form of key1=value1&key2=value2&key3=value3...\n const splittedLabels = labels.split(\"&\");\n let matchExpressions: any = [];\n\n splittedLabels.forEach((label: string) => {\n const splitKeyValue = label.split(\"=\");\n if (splitKeyValue.length === 2) {\n matchExpressions.push({\n key: splitKeyValue[0],\n operator: \"In\",\n values: [splitKeyValue[1]],\n });\n }\n });\n\n const nodeSelector: IAffinityModel = {\n nodeAffinity: {\n requiredDuringSchedulingIgnoredDuringExecution: {\n nodeSelectorTerms: [\n {\n matchExpressions: matchExpressions,\n },\n ],\n },\n },\n };\n if (withPodAntiAffinity) {\n const def = getDefaultAffinity(tenantName, poolName);\n nodeSelector.podAntiAffinity = def.podAntiAffinity;\n }\n console.log(nodeSelector);\n return nodeSelector;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { ITenant } from \"./ListTenants/types\";\nimport { Opts } from \"./ListTenants/utils\";\nimport {\n ADD_TENANT_ADD_CA_KEYPAIR,\n ADD_TENANT_ADD_CONSOLE_CA_KEYPAIR,\n ADD_TENANT_ADD_CONSOLE_CERT,\n ADD_TENANT_ADD_FILE_TO_CA_KEYPAIR,\n ADD_TENANT_ADD_FILE_TO_CONSOLE_CA_KEYPAIR,\n ADD_TENANT_ADD_FILE_TO_MINIO_KEYPAIR,\n ADD_TENANT_ADD_MINIO_KEYPAIR,\n ADD_TENANT_DELETE_CA_KEYPAIR,\n ADD_TENANT_DELETE_CONSOLE_CA_KEYPAIR,\n ADD_TENANT_DELETE_MINIO_KEYPAIR,\n ADD_TENANT_ENCRYPTION_CLIENT_CERT,\n ADD_TENANT_ENCRYPTION_GEMALTO_CA,\n ADD_TENANT_ENCRYPTION_SERVER_CERT,\n ADD_TENANT_ENCRYPTION_VAULT_CA,\n ADD_TENANT_ENCRYPTION_VAULT_CERT,\n ADD_TENANT_RESET_FORM,\n ADD_TENANT_SET_CURRENT_PAGE,\n ADD_TENANT_SET_LIMIT_SIZE,\n ADD_TENANT_SET_PAGE_VALID,\n ADD_TENANT_SET_STORAGE_CLASSES_LIST,\n ADD_TENANT_UPDATE_FIELD,\n TENANT_DETAILS_SET_CURRENT_TENANT,\n TENANT_DETAILS_SET_LOADING,\n TENANT_DETAILS_SET_TAB,\n TENANT_DETAILS_SET_TENANT,\n ADD_TENANT_SET_KEY_PAIR_VALUE,\n LabelKeyPair,\n} from \"./types\";\n\n// Basic actions\nexport const setWizardPage = (page: number) => {\n return {\n type: ADD_TENANT_SET_CURRENT_PAGE,\n page,\n };\n};\n\nexport const updateAddField = (\n pageName: string,\n fieldName: string,\n value: any\n) => {\n return {\n type: ADD_TENANT_UPDATE_FIELD,\n pageName,\n field: fieldName,\n value,\n };\n};\n\nexport const isPageValid = (pageName: string, valid: boolean) => {\n return {\n type: ADD_TENANT_SET_PAGE_VALID,\n pageName,\n valid,\n };\n};\n\n// Name Tenant actions\n\nexport const setStorageClassesList = (storageClasses: Opts[]) => {\n return {\n type: ADD_TENANT_SET_STORAGE_CLASSES_LIST,\n storageClasses,\n };\n};\n\nexport const setLimitSize = (limitSize: any) => {\n return {\n type: ADD_TENANT_SET_LIMIT_SIZE,\n limitSize,\n };\n};\n\n// Security actions\n\nexport const addCaCertificate = () => {\n return {\n type: ADD_TENANT_ADD_CA_KEYPAIR,\n };\n};\n\nexport const deleteCaCertificate = (id: string) => {\n return {\n type: ADD_TENANT_DELETE_CA_KEYPAIR,\n id,\n };\n};\n\nexport const addFileToCaCertificates = (\n id: string,\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ADD_FILE_TO_CA_KEYPAIR,\n id,\n key,\n fileName,\n value,\n };\n};\n\nexport const addConsoleCaCertificate = () => {\n return {\n type: ADD_TENANT_ADD_CONSOLE_CA_KEYPAIR,\n };\n};\n\nexport const deleteConsoleCaCertificate = (id: string) => {\n return {\n type: ADD_TENANT_DELETE_CONSOLE_CA_KEYPAIR,\n id,\n };\n};\n\nexport const addFileToConsoleCaCertificates = (\n id: string,\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ADD_FILE_TO_CONSOLE_CA_KEYPAIR,\n id,\n key,\n fileName,\n value,\n };\n};\n\nexport const addKeyPair = () => {\n return {\n type: ADD_TENANT_ADD_MINIO_KEYPAIR,\n };\n};\n\nexport const deleteKeyPair = (id: string) => {\n return {\n type: ADD_TENANT_DELETE_MINIO_KEYPAIR,\n id,\n };\n};\n\nexport const addFileToKeyPair = (\n id: string,\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ADD_FILE_TO_MINIO_KEYPAIR,\n id,\n key,\n fileName,\n value,\n };\n};\n\nexport const addConsoleCertificate = (\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ADD_CONSOLE_CERT,\n key,\n fileName,\n value,\n };\n};\n\nexport const addFileServerCert = (\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ENCRYPTION_SERVER_CERT,\n key,\n fileName,\n value,\n };\n};\n\nexport const addFileClientCert = (\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ENCRYPTION_CLIENT_CERT,\n key,\n fileName,\n value,\n };\n};\n\nexport const addFileVaultCert = (\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ENCRYPTION_VAULT_CERT,\n key,\n fileName,\n value,\n };\n};\n\nexport const addFileVaultCa = (fileName: string, value: string) => {\n return {\n type: ADD_TENANT_ENCRYPTION_VAULT_CA,\n fileName,\n value,\n };\n};\n\nexport const addFileGemaltoCa = (fileName: string, value: string) => {\n return {\n type: ADD_TENANT_ENCRYPTION_GEMALTO_CA,\n fileName,\n value,\n };\n};\n\nexport const resetAddTenantForm = () => {\n return {\n type: ADD_TENANT_RESET_FORM,\n };\n};\n\nexport const setTenantDetailsLoad = (loading: boolean) => {\n return {\n type: TENANT_DETAILS_SET_LOADING,\n state: loading,\n };\n};\n\nexport const setTenantName = (tenantName: string, tenantNamespace: string) => {\n return {\n type: TENANT_DETAILS_SET_CURRENT_TENANT,\n name: tenantName,\n namespace: tenantNamespace,\n };\n};\n\nexport const setTenantInfo = (tenant: ITenant | null) => {\n return {\n type: TENANT_DETAILS_SET_TENANT,\n tenant,\n };\n};\n\nexport const setTenantTab = (tab: string) => {\n return {\n type: TENANT_DETAILS_SET_TAB,\n tab,\n };\n};\n\nexport const setKeyValuePairs = (newArray: LabelKeyPair[]) => {\n return {\n type: ADD_TENANT_SET_KEY_PAIR_VALUE,\n newArray,\n };\n};\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak && }\n \n {errorMessage}\n \n \n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n"],"names":["withStyles","theme","createStyles","link","display","alignItems","textDecoration","maxWidth","padding","color","palette","primary","light","fontSize","icon","marginRight","justifyContent","width","to","label","classes","className","executeOnClick","onClick","root","marginLeft","borderWidth","borderColor","borderStyle","borderRadius","backgroundColor","main","opacity","contained","background","dark","children","variant","tooltip","rest","button","clsx","title","container","flexFlow","inputWithCopy","height","inputLabel","fieldBasic","value","OutlinedInput","readOnly","endAdornment","InputAdornment","position","text","BoxIconButton","onMouseDown","edge","warningBlock","margin","credentialTitle","fontWeight","buttonContainer","textAlign","marginTop","credentialsPanel","overflowY","maxHeight","promptTitle","buttonSpacer","promptIcon","newServiceAccount","open","closeModal","entity","consoleCreds","get","idp","ModalWrapper","modalOpen","onClose","titleIcon","Grid","item","xs","formScrollable","Array","isArray","map","credentialsPair","index","accessKey","secretKey","WarnIcon","Button","consoleExtras","cCreds","itemMap","access_key","secret_key","console","filename","element","document","createElement","setAttribute","encodeURIComponent","style","body","appendChild","click","removeChild","download","JSON","stringify","endIcon","tooltipHelper","valueString","whiteSpace","overflow","textOverflow","fileInputField","fileInputStyles","textBoxContainer","border","paddingLeft","onChange","id","name","disabled","required","error","accept","useState","showFileSelector","setShowSelector","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","placement","HelpIcon","type","e","fileName","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","component","disableRipple","disableFocusRipple","size","Cancel","ErrorBlock","errorMessage","fileReselect","AttachFile","radioStyles","makeStyles","radioIcons","RadioButton","props","checkedIcon","radioSelectedIcon","radioUnselectedIcon","optionLabel","checkedOption","selectorOptions","currentSelection","disableOptions","displayInColumn","radioOptionsLayout","row","selectorOption","control","SelectStyled","lineHeight","spacing","input","InputBase","options","fullWidth","option","wizardStepContainer","flexDirection","flex","wizardComponent","marginBottom","minHeight","wizardModal","buttonsContainer","borderTop","paddingBottom","buttonInnerContainer","page","pageChange","loadingStep","forModal","componentRender","LinearProgress","buttons","btn","toPage","action","buttonAction","enabled","wizFromContainer","wizFromModal","modalWizardSteps","borderBottom","listStyle","buttonList","cursor","outline","boxShadow","paddedContentGrid","stepsLabel","stepsMasterContainer","top","verticalSteps","borderRight","stepsContainer","paddingTop","stepItem","wizardSteps","currentStep","setCurrentStep","toElement","lastPage","nextPage","prevPage","pg","Fragment","step","sm","md","lg","xl","List","dense","ListItem","selected","ListItemText","pageContentStyles","contentSpacer","mapDispatchToProps","toggleList","connector","connect","state","sidebarOpen","system","operatorMode","managerObjects","objectBrowser","objectManager","objectsToManage","headerContainer","left","labelStyle","rightMenu","logo","fill","middleComponent","actions","direction","sx","IMkEnvs","storageClasses","tenants","createTenant","customImage","fields","configure","imageName","customDockerhub","imageRegistry","imageRegistryUsername","imageRegistryPassword","exposeMinIO","exposeConsole","prometheusCustom","tenantCustom","logSearchCustom","logSearchVolumeSize","logSearchSizeFactor","prometheusVolumeSize","prometheusSizeFactor","logSearchSelectedStorageClass","logSearchImage","kesImage","logSearchPostgresImage","logSearchPostgresInitImage","prometheusSelectedStorageClass","prometheusImage","prometheusSidecarImage","prometheusInitImage","selectedStorageClass","nameTenant","tenantSecurityContext","logSearchSecurityContext","logSearchPostgresSecurityContext","prometheusSecurityContext","updateAddField","isPageValid","configSectionItem","tenantCustomizationFields","containerItem","fieldGroup","createTenantCommon","responsiveSectionItem","logSearchCustomFields","fieldSpaceTop","prometheusCustomFields","modalBasic","wizardCommon","validationErrors","setValidationErrors","configureSTClasses","updateField","useCallback","field","useEffect","customAccountValidation","fieldKey","runAsUser","customValidation","parseInt","customValidationMessage","runAsGroup","fsGroup","pattern","customPatternMessage","commonVal","commonFormValidation","Object","keys","filter","cleanValidation","fieldName","clearValidationError","Paper","paperWrapper","headerElement","h3Section","descriptionText","FormSwitchWrapper","checked","multiContainer","InputBoxWrapper","min","runAsNonRoot","SelectWrapper","idpSelection","identityProvider","accessKeys","secretKeys","openIDConfigurationURL","openIDClientID","openIDSecretID","openIDCallbackURL","openIDClaimName","openIDScopes","ADURL","ADSkipTLS","ADServerInsecure","ADUserNameSearchFilter","ADGroupSearchBaseDN","ADGroupSearchFilter","ADGroupNameAttribute","ADUserDNs","ADUserNameFormat","ADLookupBindDN","ADLookupBindPassword","ADUserDNSearchBaseDN","ADUserDNSearchFilter","ADServerStartTLS","shortened","gridTemplateColumns","gridGap","buttonTray","overlayAction","protocolRadioOptions","adUserDnRows","formFieldStyles","updateUserField","newUserField","updatePwordField","updateADUserField","newADUserDNsField","customIDPValidation","i","push","inputs","_","placeholder","Add","splice","RemoveIcon","getRandomString","Casino","Delete","RadioGroupSelector","formFieldRow","Typography","gutterBottom","enableTLS","security","enableAutoCert","enableCustomCerts","minioCertificates","certificates","caCertificates","addFileToCaCertificates","deleteCaCertificate","addCaCertificate","addKeyPair","addFileToKeyPair","deleteKeyPair","minioCertificateRows","fileItem","minWidth","minioCertsContainer","minioCACertsRow","rowActions","keyPair","FileSelector","encodedValue","cert","key","AddIcon","replicas","encryption","enableEncryption","encryptionType","gemaltoEndpoint","gemaltoToken","gemaltoDomain","gemaltoRetry","awsEndpoint","awsRegion","awsKMSKey","awsAccessKey","awsSecretKey","awsToken","vaultEndpoint","vaultEngine","vaultNamespace","vaultPrefix","vaultAppRoleEngine","vaultId","vaultSecret","vaultRetry","vaultPing","azureEndpoint","azureTenantID","azureClientID","azureClientSecret","gcpProjectID","gcpEndpoint","gcpClientEmail","gcpClientID","gcpPrivateKeyID","gcpPrivateKey","enableCustomCertsForKES","serverCertificate","clientCertificate","vaultCertificate","vaultCA","gemaltoCA","kesSecurityContext","addFileServerCert","addFileClientCert","addFileVaultCert","addFileVaultCa","addFileGemaltoCa","encryptionTypeOptions","mutualTlsConfig","rightSpacer","responsiveContainer","encryptionAvailable","encoded_key","encoded_cert","encryptionValidation","podAffinity","affinity","nodeSelectorLabels","withPodAntiAffinity","keyValuePairs","nodeSelectorPairs","setModalErrorSnackMessage","setKeyValuePairs","affinityConfigField","affinityFieldLabel","radioField","affinityLabelKey","affinityLabelValue","affinityRow","loading","setLoading","keyValueMap","setKeyValueMap","keyOptions","setKeyOptions","api","then","res","k","catch","err","vl","kvp","kvs","a","indexOf","join","valid","splittedLabels","forEach","splitItem","affinityHelpText","newKey","arrCp","assign","v","setErrorSnackMessage","wrapText","wordWrap","deleteDialogStyles","namespace","addNamespaceOpen","closeAddNamespaceModalAndRefresh","addNamespaceLoading","setAddNamespaceLoading","ConfirmDialog","confirmText","confirmButtonProps","isOpen","isLoading","onConfirm","confirmationContent","DialogContentText","volumeSize","tenantSize","sizeFactor","drivesPerServer","nodes","memoryNode","ecParity","ecParityChoices","cleanECChoices","resourcesSize","distribution","ecParityCalc","limitSize","cpuToUse","integrationSelection","table","usableInformation","storageFactors","find","erasureCode","Divider","Table","TableBody","TableRow","TableCell","scope","align","typeSelection","storageClass","disks","niceBytes","pvSize","persistentVolumes","rawCapacity","maxCapacity","Math","floor","maxFailureTolerations","CPU","memory","driveSize","sizeUnit","maxAllocatableResources","maxCPUsUse","maxMemorySize","resourcesSpecifyLimit","resourcesCPURequestError","resourcesCPURequest","resourcesCPULimitError","resourcesCPULimit","resourcesMemoryRequestError","resourcesMemoryRequest","resourcesMemoryLimitError","resourcesMemoryLimit","compositeFieldContainer","compositeAddOn","memoryExists","cpuExists","maxMemory","mem_priority","max_allocatable_mem","cpu_priority","max_allocatable_cpu","maxAllocatableCPU","baseCpuUse","max","baseMemoryUse","isNaN","validity","log","errorFlag","setErrorFlag","nodeError","setNodeError","ecCodeValidated","erasureCodeCalc","includes","defaultEC","factor","getBytes","clusterCapacity","unit","distrCalculate","calculateDistribution","parsedSize","commonValidation","trim","ecList","ecListTransform","k8sfactorForDropdown","selectedStorageType","formToRender","updateMainField","undefined","setConfigs","mkPanelConfigurations","mainSelection","resourcesConfigurations","aws","azure","gcp","variantSelectorLabel","variantSelectorValues","configurations","sizingComponent","default","tenantName","setStorageClassesList","setLimitSize","sizePreview","emptyNamespace","setEmptyNamespace","loadingNamespaceInfo","setLoadingNamespaceInfo","showCreateButton","setShowCreateButton","openAddNSConfirm","setOpenAddNSConfirm","getNamespaceInformation","tenantsList","elements","getLimitSizes","newStorage","stExists","findIndex","detailedError","debounceNamespace","useMemo","debounce","cancel","customNamespaceError","isValid","frmValidationCleanup","refresh","overlayIcon","features","session","formRender","setFormRender","setConfiguration","validPages","resetAddTenantForm","pageBox","settingsCommon","showNewCredentials","setShowNewCredentials","createdAccount","setCreatedAccount","addSending","setAddSending","consoleCaCertificates","consoleCertificate","affinityType","kesReplicas","poolName","generatePoolName","affinityObject","getDefaultAffinity","getNodeSelector","dataSend","access_keys","secret_keys","enable_tls","enable_console","enable_prometheus","service_name","image","expose_minio","expose_console","pools","servers","volumes_per_server","volume_configuration","storage_class_name","securityContext","erasureCodingParity","resources","requests","cpu","limits","image_registry","registry","username","password","logSearchConfiguration","storageSize","postgres_image","postgres_init_image","postgres_securityContext","prometheusConfiguration","sidecar_image","init_image","tenantCerts","consoleCerts","caCerts","consoleCaCerts","ca_certificates","console_ca_certificates","minio","crt","tls","insertEncrypt","gemaltoCAIntroduce","ca","gemalto","keysecure","endpoint","credentials","token","domain","retry","secretsmanager","region","kmskey","accesskey","secretkey","keyvault","tenant_id","client_id","client_secret","secretmanager","project_id","client_email","private_key_id","private_key","vaultKeyPair","vaultCAInsert","vaultTLS","vault","engine","prefix","approle","secret","status","ping","encryptionServerKeyPair","encryptionClientKeyPair","client","server","dataIDP","keyarray","oidc","configuration_url","secret_id","claim_name","callback_url","scopes","active_directory","url","skip_tls_verification","server_insecure","username_format","username_search_filter","group_search_base_dn","group_search_filter","group_name_attribute","user_dns","lookup_bind_dn","lookup_bind_password","user_dn_search_base_dn","user_dn_search_filter","server_start_tls","consoleSAList","newSrvAcc","consoleItem","consoleKey","cancelButton","history","createButton","every","filteredWizardSteps","advancedOnly","CredentialsPrompt","PageHeader","BackLink","PageLayout","GenericWizard","resourceQuotas","quotas","returnQuotas","rsQuota","stCName","hard","used","tenantIsOnline","tenant","currentState","health_status","podAntiAffinity","requiredDuringSchedulingIgnoredDuringExecution","labelSelector","matchExpressions","operator","values","topologyKey","labels","splitKeyValue","nodeSelector","nodeAffinity","nodeSelectorTerms","def","pageName","ADD_TENANT_UPDATE_FIELD","ADD_TENANT_SET_PAGE_VALID","ADD_TENANT_SET_STORAGE_CLASSES_LIST","ADD_TENANT_SET_LIMIT_SIZE","ADD_TENANT_ADD_CA_KEYPAIR","ADD_TENANT_DELETE_CA_KEYPAIR","ADD_TENANT_ADD_FILE_TO_CA_KEYPAIR","ADD_TENANT_ADD_MINIO_KEYPAIR","ADD_TENANT_DELETE_MINIO_KEYPAIR","ADD_TENANT_ADD_FILE_TO_MINIO_KEYPAIR","ADD_TENANT_ENCRYPTION_SERVER_CERT","ADD_TENANT_ENCRYPTION_CLIENT_CERT","ADD_TENANT_ENCRYPTION_VAULT_CERT","ADD_TENANT_ENCRYPTION_VAULT_CA","ADD_TENANT_ENCRYPTION_GEMALTO_CA","ADD_TENANT_RESET_FORM","setTenantDetailsLoad","TENANT_DETAILS_SET_LOADING","setTenantName","tenantNamespace","TENANT_DETAILS_SET_CURRENT_TENANT","setTenantInfo","TENANT_DETAILS_SET_TENANT","setTenantTab","tab","TENANT_DETAILS_SET_TAB","newArray","ADD_TENANT_SET_KEY_PAIR_VALUE","errorBlock","withBreak"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1056.f7b9df60.chunk.js b/portal-ui/build/static/js/1056.f7b9df60.chunk.js
new file mode 100644
index 000000000..bd586c5a2
--- /dev/null
+++ b/portal-ui/build/static/js/1056.f7b9df60.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1056,1140],{29316:function(e,t,n){n(50390);var a=n(6369),r=n(86509),i=n(4285),s=n(98280),o=n(62559);t.Z=(0,i.Z)((function(e){return(0,r.Z)({link:{display:"flex",alignItems:"center",textDecoration:"none",maxWidth:"300px",padding:"2rem 2rem 0rem 2rem",color:e.palette.primary.light,fontSize:".8rem","&:hover":{textDecoration:"underline"}},icon:{marginRight:".3rem",display:"flex",alignItems:"center",justifyContent:"center","& svg.min-icon":{width:12}}})}))((function(e){var t=e.to,n=e.label,r=e.classes,i=e.className,l=e.executeOnClick;return(0,o.jsxs)(a.rU,{to:t,className:"".concat(r.link," ").concat(i||""),onClick:function(){l&&l()},children:[(0,o.jsx)("div",{className:r.icon,children:(0,o.jsx)(s.xN,{})}),(0,o.jsx)("div",{className:r.label,children:n})]})}))},70758:function(e,t,n){var a=n(18489),r=n(36222),i=n(83738),s=(n(50390),n(86509)),o=n(4285),l=n(95467),c=n(94187),u=n(44977),d=n(62559),m=["classes","children","variant","tooltip"];t.Z=(0,o.Z)((function(e){return(0,s.Z)({root:{padding:8,marginLeft:8,borderWidth:1,borderColor:"#696969",color:"#696969",borderStyle:"solid",borderRadius:3,"& .min-icon":{width:20},"& .MuiTouchRipple-root span":{backgroundColor:e.palette.primary.main,borderRadius:3,opacity:.3},"&:disabled":{color:"#EBEBEB",borderColor:"#EBEBEB"}},contained:{borderColor:e.palette.primary.main,background:e.palette.primary.main,color:"white","& .MuiTouchRipple-root span":{backgroundColor:e.palette.primary.dark,borderRadius:3,opacity:.3},"&:hover":{backgroundColor:e.palette.primary.light,color:"#FFF"}}})}))((function(e){var t=e.classes,n=e.children,s=e.variant,o=void 0===s?"outlined":s,p=e.tooltip,g=(0,i.Z)(e,m),f=(0,d.jsx)(l.Z,(0,a.Z)((0,a.Z)({},g),{},{className:(0,u.Z)(t.root,(0,r.Z)({},t.contained,"contained"===o)),children:n}));return p&&""!==p?(0,d.jsx)(c.Z,{title:p,children:(0,d.jsx)("span",{children:f})}):f}))},39080:function(e,t,n){n.r(t),n.d(t,{default:function(){return Z}});var a=n(18489),r=n(35531),i=n(50390),s=n(38342),o=n.n(s),l=n(86509),c=n(4285),u=n(66946),d=n(76352),m=n(25594),p=n(58217),g=n(65771),f=n(70758),h=n(33034),x=n.n(h),v=n(98280),y=n(72462),C=n(62559),S=(0,c.Z)((function(e){return(0,l.Z)({container:{display:"flex",flexFlow:"column",padding:"20px 0 8px 0"},inputWithCopy:{"& .MuiInputBase-root ":{width:"100%",background:"#FBFAFA","& .MuiInputBase-input":{height:".8rem"},"& .MuiInputAdornment-positionEnd":{marginRight:".5rem","& .MuiButtonBase-root":{height:"2rem"}}},"& .MuiButtonBase-root .min-icon":{width:".8rem",height:".8rem"}},inputLabel:(0,a.Z)((0,a.Z)({},y.YI.inputLabel),{},{fontSize:".8rem"})})}))((function(e){var t=e.label,n=void 0===t?"":t,a=e.value,r=void 0===a?"":a,i=e.classes,s=void 0===i?{}:i;return(0,C.jsxs)("div",{className:s.container,children:[(0,C.jsxs)("div",{className:s.inputLabel,children:[n,":"]}),(0,C.jsx)("div",{className:s.inputWithCopy,children:(0,C.jsx)(p.Z,{value:r,readOnly:!0,endAdornment:(0,C.jsx)(g.Z,{position:"end",children:(0,C.jsx)(x(),{text:r,children:(0,C.jsx)(f.Z,{"aria-label":"copy",tooltip:"Copy",onClick:function(){},onMouseDown:function(){},edge:"end",children:(0,C.jsx)(v.TI,{})})})})})})]})})),j=n(47424),Z=(0,c.Z)((function(e){return(0,l.Z)({warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}},credentialTitle:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},buttonContainer:{textAlign:"right",marginTop:"1rem"},credentialsPanel:{overflowY:"auto",maxHeight:350},promptTitle:{display:"flex",alignItems:"center"},buttonSpacer:{marginRight:".9rem"},promptIcon:{marginRight:".1rem",display:"flex",alignItems:"center",height:"2rem",width:"2rem"}})}))((function(e){var t=e.classes,n=e.newServiceAccount,s=e.open,l=e.closeModal,c=e.entity;if(!n)return null;var p=o()(n,"console",null),g=o()(n,"idp",!1);return(0,C.jsx)(d.Z,{modalOpen:s,onClose:function(){l()},title:(0,C.jsx)("div",{className:t.promptTitle,children:(0,C.jsxs)("div",{children:["New ",c," Created"]})}),titleIcon:(0,C.jsx)(v.tV,{}),children:(0,C.jsxs)(m.ZP,{container:!0,children:[(0,C.jsxs)(m.ZP,{item:!0,xs:12,className:t.formScrollable,children:["A new ",c," has been created with the following details:",!g&&p&&(0,C.jsx)(i.Fragment,{children:(0,C.jsxs)(m.ZP,{item:!0,xs:12,className:t.credentialsPanel,children:[(0,C.jsx)("div",{className:t.credentialTitle,children:"Console Credentials"}),Array.isArray(p)&&p.map((function(e,t){return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(S,{label:"Access Key",value:e.accessKey}),(0,C.jsx)(S,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(p)&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(S,{label:"Access Key",value:p.accessKey}),(0,C.jsx)(S,{label:"Secret Key",value:p.secretKey})]})]})}),g?(0,C.jsx)("div",{className:t.warningBlock,children:"Please Login via the configured external identity provider."}):(0,C.jsxs)("div",{className:t.warningBlock,children:[(0,C.jsx)(j.Z,{}),(0,C.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,C.jsxs)(m.ZP,{item:!0,xs:12,className:t.buttonContainer,children:[(0,C.jsx)(u.Z,{variant:"outlined",className:t.buttonSpacer,onClick:function(){l()},color:"primary",children:"Done"}),!g&&(0,C.jsx)(u.Z,{onClick:function(){var e={};if(p)if(Array.isArray(p)){var t=p.map((function(e){return{access_key:e.accessKey,secret_key:e.secretKey}}));e={console:(0,r.Z)(t)}}else e={console:[{access_key:p.accessKey,secret_key:p.secretKey}]};!function(e,t){var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)}("credentials.json",JSON.stringify((0,a.Z)({},e)))},endIcon:(0,C.jsx)(v._8,{}),variant:"contained",color:"primary",children:"Download"})]})]})})}))},82461:function(e,t,n){n.d(t,{Z:function(){return C}});var a=n(23430),r=n(18489),i=n(50390),s=n(38342),o=n.n(s),l=n(25594),c=n(36554),u=n(94187),d=n(95467),m=n(46529),p=n(94258),g=n(86509),f=n(4285),h=n(72462),x=n(97538),v=n(82981),y=n(62559),C=(0,f.Z)((function(e){return(0,g.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},h.YI),h.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},h.bV),{},{inputLabel:(0,r.Z)((0,r.Z)({},h.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,r.Z)((0,r.Z)({},h.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var t=e.label,n=e.classes,r=e.onChange,s=e.id,g=e.name,f=e.disabled,h=void 0!==f&&f,C=e.tooltip,S=void 0===C?"":C,j=e.required,Z=e.error,b=void 0===Z?"":Z,_=e.accept,P=void 0===_?"":_,N=e.value,I=void 0===N?"":N,A=(0,i.useState)(!1),T=(0,a.Z)(A,2),k=T[0],R=T[1];return(0,y.jsx)(i.Fragment,{children:(0,y.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(n.fileInputField," ").concat(n.fieldBottom," ").concat(n.fieldContainer," ").concat(""!==b?n.errorInField:""),children:[""!==t&&(0,y.jsxs)(c.Z,{htmlFor:s,className:"".concat(""!==b?n.fieldLabelError:""," ").concat(n.inputLabel),children:[(0,y.jsxs)("span",{children:[t,j?"*":""]}),""!==S&&(0,y.jsx)("div",{className:n.tooltipContainer,children:(0,y.jsx)(u.Z,{title:S,placement:"top-start",children:(0,y.jsx)("div",{className:n.tooltip,children:(0,y.jsx)(x.Z,{})})})})]}),k||""===I?(0,y.jsxs)("div",{className:n.textBoxContainer,children:[(0,y.jsx)("input",{type:"file",name:g,onChange:function(e){var t=o()(e,"target.files[0].name","");!function(e,t){var n=e.target.files[0],a=new FileReader;a.readAsDataURL(n),a.onload=function(){var e=a.result;if(e){var n=e.toString().split("base64,");2===n.length&&t(n[1])}}}(e,(function(e){r(e,t)}))},accept:P,required:j,disabled:h,className:n.fileInputField}),""!==I&&(0,y.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){R(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(p.Z,{})}),""!==b&&(0,y.jsx)(v.Z,{errorMessage:b})]}):(0,y.jsxs)("div",{className:n.fileReselect,children:[(0,y.jsx)("div",{className:n.valueString,children:I}),(0,y.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){R(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(m.Z,{})})]})]})})}))},27207:function(e,t,n){var a=n(36222),r=n(18489),i=(n(50390),n(44977)),s=n(25594),o=n(82420),l=n(66695),c=n(98893),u=n(36554),d=n(94187),m=n(86509),p=n(4285),g=n(62449),f=n(72462),h=n(97538),x=n(62559),v=(0,g.Z)((0,r.Z)({root:{"&:hover":{backgroundColor:"transparent"}}},f.FU)),y=function(e){var t=v();return(0,x.jsx)(c.Z,(0,r.Z)({className:t.root,disableRipple:!0,color:"default",checkedIcon:(0,x.jsx)("span",{className:t.radioSelectedIcon}),icon:(0,x.jsx)("span",{className:t.radioUnselectedIcon})},e))};t.Z=(0,p.Z)((function(e){return(0,m.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},f.YI),f.Hr),{},{optionLabel:{"&.Mui-disabled":{"& .MuiFormControlLabel-label":{color:"#9c9c9c"}},"&:last-child":{marginRight:0},"& .MuiFormControlLabel-label":{fontSize:12,color:"#07193E"}},checkedOption:{"& .MuiFormControlLabel-label":{fontSize:12,color:"#07193E",fontWeight:700}}}))}))((function(e){var t=e.selectorOptions,n=void 0===t?[]:t,r=e.currentSelection,c=e.label,m=e.id,p=e.name,g=e.onChange,f=e.tooltip,v=void 0===f?"":f,C=e.disableOptions,S=void 0!==C&&C,j=e.classes,Z=e.displayInColumn,b=void 0!==Z&&Z;return(0,x.jsxs)(s.ZP,{container:!0,alignItems:"center",children:[(0,x.jsx)(s.ZP,{item:!0,xs:!0,children:(0,x.jsxs)(u.Z,{htmlFor:m,className:j.inputLabel,children:[(0,x.jsx)("span",{children:c}),""!==v&&(0,x.jsx)("div",{className:j.tooltipContainer,children:(0,x.jsx)(d.Z,{title:v,placement:"top-start",children:(0,x.jsx)("div",{children:(0,x.jsx)(h.Z,{})})})})]})}),(0,x.jsx)(s.ZP,{item:!0,xs:!0,className:j.radioOptionsLayout,children:(0,x.jsx)(o.Z,{"aria-label":m,id:m,name:p,value:r,onChange:g,row:!b,style:{display:"block",textAlign:"right"},children:n.map((function(e){return(0,x.jsx)(l.Z,{value:e.value,control:(0,x.jsx)(y,{}),label:e.label,disabled:S,className:(0,i.Z)(j.optionLabel,(0,a.Z)({},j.checkedOption,e.value===r))},"rd-".concat(p,"-").concat(e.value))}))})})]})}))},67754:function(e,t,n){var a=n(18489),r=n(50390),i=n(25594),s=n(46413),o=n(36554),l=n(94187),c=n(47554),u=n(43965),d=n(31680),m=n(86509),p=n(4285),g=n(72462),f=n(97538),h=n(62559),x=(0,p.Z)((function(e){return(0,m.Z)({root:{height:38,lineHeight:1,"label + &":{marginTop:e.spacing(3)}},input:{height:38,position:"relative",color:"#07193E",fontSize:13,fontWeight:600,padding:"8px 20px 10px 10px",border:"#e5e5e5 1px solid",borderRadius:4,display:"flex",alignItems:"center","&:hover":{borderColor:"#393939"},"&:focus":{backgroundColor:"#fff"}}})}))(s.ZP);t.Z=(0,p.Z)((function(e){return(0,m.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},g.YI),g.Hr),{},{inputLabel:(0,a.Z)((0,a.Z)({},g.YI.inputLabel),{},{"& span":{fontWeight:"normal"}}),fieldContainer:{display:"flex","@media (max-width: 600px)":{flexFlow:"column"}}}))}))((function(e){var t=e.classes,n=e.id,a=e.name,s=e.onChange,m=e.options,p=e.label,g=e.tooltip,v=void 0===g?"":g,y=e.value,C=e.disabled,S=void 0!==C&&C;return(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(i.ZP,{item:!0,xs:12,className:t.fieldContainer,children:[""!==p&&(0,h.jsxs)(o.Z,{htmlFor:n,className:t.inputLabel,children:[(0,h.jsx)("span",{children:p}),""!==v&&(0,h.jsx)("div",{className:t.tooltipContainer,children:(0,h.jsx)(l.Z,{title:v,placement:"top-start",children:(0,h.jsx)("div",{className:t.tooltip,children:(0,h.jsx)(f.Z,{})})})})]}),(0,h.jsx)(c.Z,{fullWidth:!0,children:(0,h.jsx)(u.Z,{id:n,name:a,value:y,onChange:s,input:(0,h.jsx)(x,{}),disabled:S,children:m.map((function(e){return(0,h.jsx)(d.Z,{value:e.value,children:e.label},"select-".concat(a,"-").concat(e.label))}))})})]})})}))},76295:function(e,t,n){n.d(t,{Z:function(){return f}});var a=n(23430),r=n(50390),i=n(86509),s=n(4285),o=n(81378),l=n(66946),c=n(62559),u=(0,s.Z)((function(e){return(0,i.Z)({wizardStepContainer:{display:"flex",flexDirection:"column",flex:1},wizardComponent:{overflowY:"auto",marginBottom:10,height:"calc(100vh - 100px - 80px)",minHeight:400,flex:1,width:"100%"},wizardModal:{overflowY:"auto",marginBottom:10,height:"calc(100vh - 515px)"},buttonsContainer:{display:"flex",flexDirection:"row",justifyContent:"flex-start",padding:"10px 0",borderTop:"#EAEAEA 1px solid","& button":{marginLeft:10},"&.forModal":{paddingBottom:0}},buttonInnerContainer:{width:"100%",textAlign:"right",marginRight:15}})}))((function(e){var t=e.classes,n=e.page,a=e.pageChange,r=e.loadingStep,i=e.forModal;return(0,c.jsxs)("div",{className:t.wizardStepContainer,children:[(0,c.jsx)("div",{className:i?t.wizardModal:t.wizardComponent,children:n.componentRender}),r&&(0,c.jsx)("div",{children:(0,c.jsx)(o.Z,{})}),(0,c.jsx)("div",{className:"".concat(t.buttonsContainer," ").concat(i?"forModal":""),children:(0,c.jsx)("div",{className:t.buttonInnerContainer,children:n.buttons.map((function(e){return(0,c.jsx)(l.Z,{variant:"contained",color:"primary",size:"small",onClick:function(){!function(e){switch(e.type){case"next":a("++");break;case"back":a("--");break;case"to":a(e.toPage||0)}e.action&&e.action(a)}(e)},disabled:!e.enabled,children:e.label},"button-".concat(n.label,"-").concat(e.label))}))})})]})})),d=n(5211),m=n(25594),p=n(14291),g=n(70902),f=(0,s.Z)((function(e){return(0,i.Z)({wizFromContainer:{},wizFromModal:{position:"relative"},modalWizardSteps:{padding:5,borderBottom:"#eaeaea 1px solid","& ul":{padding:0,marginTop:0,display:"flex",justifyContent:"space-evenly","& li":{listStyle:"lower-roman","&::marker":{paddingLeft:15}}}},buttonList:{backgroundColor:"transparent",border:"none",cursor:"pointer","&:not(:disabled):hover":{textDecoration:"underline"},"&:selected, &:active, &:focus, &:focus:active":{border:"none",outline:0,boxShadow:"none"}},paddedContentGrid:{marginTop:8,padding:"0 10px",minHeight:400},stepsLabel:{fontSize:20,color:"#393939",fontWeight:600,margin:"15px 12px","&.stepsModalTitle":{textAlign:"center",width:"100%",marginTop:0,marginBottom:10}},stepsMasterContainer:{position:"sticky",top:0,backgroundColor:"#FFFFFF",width:"100%",maxHeight:90},verticalSteps:{borderRight:"1px solid #E5E5E5",background:"#F8F8F8"},stepsContainer:{paddingTop:0,"& .MuiButtonBase-root.Mui-selected":{background:"#E5E5E5"}},stepItem:{minHeight:60,borderBottom:"1px solid #E5E5E5","&:hover":{background:"rgba(247,247,247,0.7)"}}})}))((function(e){var t=e.classes,n=e.wizardSteps,i=e.loadingStep,s=e.forModal,o=(0,r.useState)(0),l=(0,a.Z)(o,2),f=l[0],h=l[1],x=function(e){var t=n.length-1;if("++"===e){var a=f+1;a>t&&(a=t),h(a)}if("--"===e){var r=f-1;r<0&&(r=0),h(r)}if("number"===typeof e){var i=e;e<0&&(i=0),e>t&&(i=t),h(i)}};if(0===n.length)return null;return(0,c.jsxs)(m.ZP,{container:!0,className:s?t.wizFromModal:t.wizFromContainer,children:[s?(0,c.jsx)(r.Fragment,{children:(0,c.jsxs)("div",{className:t.stepsMasterContainer,children:[(0,c.jsx)("div",{className:"".concat(t.stepsLabel," stepsModalTitle"),children:"Steps"}),(0,c.jsx)("div",{className:t.modalWizardSteps,children:(0,c.jsx)("ul",{children:n.map((function(e,n){return(0,c.jsx)("li",{children:(0,c.jsx)("button",{onClick:function(){return x(n)},disabled:n>f,className:t.buttonList,children:e.label})},"wizard-".concat(n.toString()))}))})})]})}):(0,c.jsx)(r.Fragment,{children:(0,c.jsx)(m.ZP,{item:!0,xs:12,sm:2,md:2,lg:2,xl:2,className:t.verticalSteps,children:(0,c.jsx)(r.Fragment,{children:(0,c.jsx)(d.Z,{component:"nav",dense:!0,classes:{root:t.stepsContainer},children:n.map((function(e,n){return(0,c.jsx)(p.ZP,{button:!0,disableRipple:!0,onClick:function(){return x(n)},selected:f===n,classes:{root:t.stepItem},children:(0,c.jsx)(g.Z,{primary:e.label})},"wizard-".concat(n.toString()))}))})})})}),(0,c.jsx)(m.ZP,{item:!0,xs:12,sm:s?12:10,md:s?12:10,lg:s?12:10,xl:s?12:10,className:s?"":t.paddedContentGrid,children:(0,c.jsx)(u,{page:n[f],pageChange:x,loadingStep:i,forModal:s})})]})}))},25534:function(e,t,n){var a=n(18489),r=(n(50390),n(25594)),i=n(86509),s=n(4285),o=n(72462),l=n(62559);t.Z=(0,s.Z)((function(e){return(0,i.Z)((0,a.Z)({},o.Bw))}))((function(e){var t=e.classes,n=e.className,a=void 0===n?"":n,i=e.children;return(0,l.jsx)("div",{className:t.contentSpacer,children:(0,l.jsx)(r.ZP,{container:!0,children:(0,l.jsx)(r.ZP,{item:!0,xs:12,className:a,children:i})})})}))},35721:function(e,t,n){n(50390);var a=n(34424),r=n(25594),i=n(86509),s=n(4285),o=n(35477),l=n(95467),c=n(26805),u=n(44078),d=n(5265),m=n(98280),p=n(62559),g={toggleList:d.kQ},f=(0,a.$j)((function(e){return{sidebarOpen:e.system.sidebarOpen,operatorMode:e.system.operatorMode,managerObjects:e.objectBrowser.objectManager.objectsToManage}}),g);t.Z=f((0,s.Z)((function(e){return(0,i.Z)({headerContainer:{width:"100%",minHeight:79,display:"flex",backgroundColor:"#fff",left:0,boxShadow:"rgba(0,0,0,.08) 0 3px 10px"},label:{display:"flex",justifyContent:"flex-start",alignItems:"center"},labelStyle:{color:"#000",fontSize:18,fontWeight:700,marginLeft:34,marginTop:8},rightMenu:{textAlign:"right"},logo:{marginLeft:34,fill:e.palette.primary.main,"& .min-icon":{width:120}},middleComponent:{display:"flex",justifyContent:"center",alignItems:"center"}})}))((function(e){var t=e.classes,n=e.label,a=e.actions,i=e.sidebarOpen,s=e.operatorMode,d=e.managerObjects,g=e.toggleList,f=e.middleComponent;return(0,p.jsxs)(r.ZP,{container:!0,className:"".concat(t.headerContainer," page-header"),direction:"row",alignItems:"center",children:[(0,p.jsxs)(r.ZP,{item:!0,xs:12,sm:12,md:f?3:6,className:t.label,sx:{paddingTop:["15px","15px","0","0"]},children:[!i&&(0,p.jsx)("div",{className:t.logo,children:s?(0,p.jsx)(c.Z,{}):(0,p.jsx)(u.Z,{})}),(0,p.jsx)(o.Z,{variant:"h4",className:t.labelStyle,children:n})]}),f&&(0,p.jsx)(r.ZP,{item:!0,xs:12,sm:12,md:6,className:t.middleComponent,sx:{marginTop:["10px","10px","0","0"]},children:f}),(0,p.jsxs)(r.ZP,{item:!0,xs:12,sm:12,md:f?3:6,className:t.rightMenu,children:[a&&a,d&&d.length>0&&(0,p.jsx)(l.Z,{color:"primary","aria-label":"Refresh List",component:"span",onClick:function(){g()},size:"large",children:(0,p.jsx)(m.gx,{})})]})]})})))},1056:function(e,t,n){n.r(t),n.d(t,{default:function(){return ze}});var a,r,i=n(23430),s=n(18489),o=n(50390),l=n(38342),c=n.n(l),u=n(34424),d=n(25594),m=n(81378),p=n(86509),g=n(4285),f=n(72462),h=n(30324),x=n(28948),v=n(76295),y=n(44149),C=n(93127),S=n(39080),j=n(46864),Z=n(35531),b=n(46981),_=n(10369),P=n(84201),N=n(92440),I=n(66964),A=n(67754),T=n(62559),k=(0,u.$j)((function(e){return{storageClasses:e.tenants.createTenant.storageClasses,customImage:e.tenants.createTenant.fields.configure.customImage,imageName:e.tenants.createTenant.fields.configure.imageName,customDockerhub:e.tenants.createTenant.fields.configure.customDockerhub,imageRegistry:e.tenants.createTenant.fields.configure.imageRegistry,imageRegistryUsername:e.tenants.createTenant.fields.configure.imageRegistryUsername,imageRegistryPassword:e.tenants.createTenant.fields.configure.imageRegistryPassword,exposeMinIO:e.tenants.createTenant.fields.configure.exposeMinIO,exposeConsole:e.tenants.createTenant.fields.configure.exposeConsole,prometheusCustom:e.tenants.createTenant.fields.configure.prometheusCustom,tenantCustom:e.tenants.createTenant.fields.configure.tenantCustom,logSearchCustom:e.tenants.createTenant.fields.configure.logSearchCustom,logSearchVolumeSize:e.tenants.createTenant.fields.configure.logSearchVolumeSize,logSearchSizeFactor:e.tenants.createTenant.fields.configure.logSearchSizeFactor,prometheusVolumeSize:e.tenants.createTenant.fields.configure.prometheusVolumeSize,prometheusSizeFactor:e.tenants.createTenant.fields.configure.prometheusSizeFactor,logSearchSelectedStorageClass:e.tenants.createTenant.fields.configure.logSearchSelectedStorageClass,logSearchImage:e.tenants.createTenant.fields.configure.logSearchImage,kesImage:e.tenants.createTenant.fields.configure.kesImage,logSearchPostgresImage:e.tenants.createTenant.fields.configure.logSearchPostgresImage,logSearchPostgresInitImage:e.tenants.createTenant.fields.configure.logSearchPostgresInitImage,prometheusSelectedStorageClass:e.tenants.createTenant.fields.configure.prometheusSelectedStorageClass,prometheusImage:e.tenants.createTenant.fields.configure.prometheusImage,prometheusSidecarImage:e.tenants.createTenant.fields.configure.prometheusSidecarImage,prometheusInitImage:e.tenants.createTenant.fields.configure.prometheusInitImage,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,tenantSecurityContext:e.tenants.createTenant.fields.configure.tenantSecurityContext,logSearchSecurityContext:e.tenants.createTenant.fields.configure.logSearchSecurityContext,logSearchPostgresSecurityContext:e.tenants.createTenant.fields.configure.logSearchPostgresSecurityContext,prometheusSecurityContext:e.tenants.createTenant.fields.configure.prometheusSecurityContext}}),{updateAddField:j.HM,isPageValid:j.NO}),R=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)({configSectionItem:{marginRight:15,"& .multiContainer":{border:"1px solid red"}},tenantCustomizationFields:{marginLeft:30,width:"88%",margin:"auto"},containerItem:{marginRight:15},fieldGroup:(0,s.Z)((0,s.Z)({},f.QV.fieldGroup),{},{paddingTop:15,marginBottom:25}),responsiveSectionItem:{"@media (max-width: 900px)":{flexFlow:"column",alignItems:"flex-start","& div > div":{marginBottom:5,marginRight:0}}},logSearchCustomFields:{marginLeft:20,padding:10,width:"90%",margin:"auto"},fieldSpaceTop:{marginTop:15},prometheusCustomFields:{marginLeft:20,padding:10,width:"90%",margin:"auto"}},f.oO),f.AK))}))(k((function(e){var t=e.classes,n=e.storageClasses,a=e.customImage,r=e.imageName,l=e.customDockerhub,c=e.imageRegistry,u=e.imageRegistryUsername,m=e.imageRegistryPassword,p=e.exposeMinIO,g=e.exposeConsole,f=e.prometheusCustom,h=e.tenantCustom,x=e.logSearchCustom,v=e.logSearchVolumeSize,y=(e.logSearchSizeFactor,e.logSearchImage),C=e.kesImage,S=e.logSearchPostgresImage,j=e.logSearchPostgresInitImage,k=e.prometheusVolumeSize,R=(e.prometheusSizeFactor,e.logSearchSelectedStorageClass),z=e.prometheusSelectedStorageClass,w=e.prometheusImage,F=e.prometheusSidecarImage,D=e.prometheusInitImage,E=e.updateAddField,U=e.isPageValid,K=e.selectedStorageClass,L=e.tenantSecurityContext,M=e.logSearchSecurityContext,q=e.logSearchPostgresSecurityContext,G=e.prometheusSecurityContext,V=(0,o.useState)({}),O=(0,i.Z)(V,2),B=O[0],$=O[1],W=[{label:"Default",value:"default"}].concat((0,Z.Z)(n)),H=(0,o.useCallback)((function(e,t){E("configure",e,t)}),[E]);(0,o.useEffect)((function(){var e=[];h&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"tenant_securityContext_runAsUser",required:!0,value:L.runAsUser,customValidation:""===L.runAsUser||parseInt(L.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"tenant_securityContext_runAsGroup",required:!0,value:L.runAsGroup,customValidation:""===L.runAsGroup||parseInt(L.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"tenant_securityContext_fsGroup",required:!0,value:L.fsGroup,customValidation:""===L.fsGroup||parseInt(L.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"prometheus_storage_class",required:!0,value:z,customValidation:""===z,customValidationMessage:"Field cannot be empty"},{fieldKey:"prometheus_volume_size",required:!0,value:k,customValidation:""===k||parseInt(k)<=0,customValidationMessage:"Volume size must be present and be greater than 0"},{fieldKey:"prometheus_securityContext_runAsUser",required:!0,value:G.runAsUser,customValidation:""===G.runAsUser||parseInt(G.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"prometheus_securityContext_runAsGroup",required:!0,value:G.runAsGroup,customValidation:""===G.runAsGroup||parseInt(G.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"prometheus_securityContext_fsGroup",required:!0,value:G.fsGroup,customValidation:""===G.fsGroup||parseInt(G.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),x&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"log_search_storage_class",required:!0,value:R,customValidation:""===R,customValidationMessage:"Field cannot be empty"},{fieldKey:"log_search_volume_size",required:!0,value:v,customValidation:""===v||parseInt(v)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"},{fieldKey:"logSearch_securityContext_runAsUser",required:!0,value:M.runAsUser,customValidation:""===M.runAsUser||parseInt(M.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"logSearch_securityContext_runAsGroup",required:!0,value:M.runAsGroup,customValidation:""===M.runAsGroup||parseInt(M.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"logSearch_securityContext_fsGroup",required:!0,value:M.fsGroup,customValidation:""===M.fsGroup||parseInt(M.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"},{fieldKey:"postgres_securityContext_runAsUser",required:!0,value:q.runAsUser,customValidation:""===q.runAsUser||parseInt(q.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"postgres_securityContext_runAsGroup",required:!0,value:G.runAsGroup,customValidation:""===q.runAsGroup||parseInt(q.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"postgres_securityContext_fsGroup",required:!0,value:q.fsGroup,customValidation:""===q.fsGroup||parseInt(q.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),a&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"image",required:!1,value:r,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/minio:VERSION'"},{fieldKey:"logSearchImage",required:!1,value:y,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/logsearchapi:VERSION'"},{fieldKey:"kesImage",required:!1,value:C,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/kes:VERSION'"},{fieldKey:"logSearchPostgresImage",required:!1,value:S,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/postgres:VERSION'"},{fieldKey:"logSearchPostgresInitImage",required:!1,value:j,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"},{fieldKey:"prometheusImage",required:!1,value:w,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/prometheus:VERSION'"},{fieldKey:"prometheusSidecarImage",required:!1,value:F,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'project/container:VERSION'"},{fieldKey:"prometheusInitImage",required:!1,value:D,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"}]),l&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"registry",required:!0,value:c},{fieldKey:"registryUsername",required:!0,value:u},{fieldKey:"registryPassword",required:!0,value:m}])));var t=(0,P.R)(e);U("configure",0===Object.keys(t).length),$(t)}),[a,r,y,C,S,j,w,F,D,l,c,u,m,U,f,h,x,z,k,R,v,L,M,q,G]),(0,o.useEffect)((function(){n.length>0&&(0===n.filter((function(e){return e.value===z})).length&&H("prometheusSelectedStorageClass","default"),0===n.filter((function(e){return e.value===R})).length&&H("logSearchSelectedStorageClass","default"))}),[R,z,K,n,H]);var Y=function(e){$((0,_.h)(B,e))};return(0,T.jsxs)(b.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Configure"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Basic configurations for tenant management"})]}),(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Expose Services"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Whether the tenant's services should request an external IP."})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"expose_minio",id:"expose_minio",name:"expose_minio",checked:p,onChange:function(e){var t=e.target.checked;H("exposeMinIO",t)},label:"Expose MiniO Service"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"expose_console",id:"expose_console",name:"expose_console",checked:g,onChange:function(e){var t=e.target.checked;H("exposeConsole",t)},label:"Expose Console Service"})}),(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Additional Configurations"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Configure SecurityContext, Storage Classes & Storage size for Log Search, Prometheus add-ons and your Tenant"})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"tenantConfig",id:"tenant_configuration",name:"tenant_configuration",checked:h,onChange:function(e){var t=e.target.checked;H("tenantCustom",t)},label:"Override Tenant defaults"})}),h&&(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.tenantCustomizationFields,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for MinIO"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:"".concat(t.configSectionItem),children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,T.jsx)("div",{className:t.containerItem,children:(0,T.jsx)(I.Z,{type:"number",id:"tenant_securityContext_runAsUser",name:"tenant_securityContext_runAsUser",onChange:function(e){H("tenantSecurityContext",(0,s.Z)((0,s.Z)({},L),{},{runAsUser:e.target.value})),Y("tenant_securityContext_runAsUser")},label:"Run As User",value:L.runAsUser,required:!0,error:B.tenant_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:t.containerItem,children:(0,T.jsx)(I.Z,{type:"number",id:"tenant_securityContext_runAsGroup",name:"tenant_securityContext_runAsGroup",onChange:function(e){H("tenantSecurityContext",(0,s.Z)((0,s.Z)({},L),{},{runAsGroup:e.target.value})),Y("tenant_securityContext_runAsGroup")},label:"Run As Group",value:L.runAsGroup,required:!0,error:B.tenant_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:t.containerItem,children:(0,T.jsx)(I.Z,{type:"number",id:"tenant_securityContext_fsGroup",name:"tenant_securityContext_fsGroup",onChange:function(e){H("tenantSecurityContext",(0,s.Z)((0,s.Z)({},L),{},{fsGroup:e.target.value})),Y("tenant_securityContext_fsGroup")},label:"FsGroup",value:L.fsGroup,required:!0,error:B.tenant_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(N.Z,{value:"tenantSecurityContextRunAsNonRoot",id:"tenant_securityContext_runAsNonRoot",name:"tenant_securityContext_runAsNonRoot",checked:L.runAsNonRoot,onChange:function(e){var t=e.target.checked;H("tenantSecurityContext",(0,s.Z)((0,s.Z)({},L),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"logSearchConfig",id:"log_search_configuration",name:"log_search_configuration",checked:x,onChange:function(e){var t=e.target.checked;H("logSearchCustom",t)},label:"Override Log Search defaults"})}),x&&(0,T.jsxs)(d.ZP,{xs:12,className:t.logSearchCustomFields,children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(A.Z,{id:"log_search_storage_class",name:"log_search_storage_class",onChange:function(e){H("logSearchSelectedStorageClass",e.target.value)},label:"Log Search Storage Class",value:R,options:W,disabled:W.length<1})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(I.Z,{type:"number",id:"log_search_volume_size",name:"log_search_volume_size",onChange:function(e){H("logSearchVolumeSize",e.target.value),Y("log_search_volume_size")},label:"Storage Size [Gi]",value:v,required:!0,error:B.log_search_volume_size||"",min:"0"})})}),(0,T.jsxs)("fieldset",{className:"".concat(t.fieldGroup," ").concat(t.fieldSpaceTop),children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for LogSearch"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_runAsUser",name:"logSearch_securityContext_runAsUser",onChange:function(e){H("logSearchSecurityContext",(0,s.Z)((0,s.Z)({},M),{},{runAsUser:e.target.value})),Y("logSearch_securityContext_runAsUser")},label:"Run As User",value:M.runAsUser,required:!0,error:B.logSearch_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_runAsGroup",name:"logSearch_securityContext_runAsGroup",onChange:function(e){H("logSearchSecurityContext",(0,s.Z)((0,s.Z)({},M),{},{runAsGroup:e.target.value})),Y("logSearch_securityContext_runAsGroup")},label:"Run As Group",value:M.runAsGroup,required:!0,error:B.logSearch_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_fsGroup",name:"logSearch_securityContext_fsGroup",onChange:function(e){H("logSearchSecurityContext",(0,s.Z)((0,s.Z)({},M),{},{fsGroup:e.target.value})),Y("logSearch_securityContext_fsGroup")},label:"FsGroup",value:M.fsGroup,required:!0,error:B.logSearch_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(N.Z,{value:"logSearchSecurityContextRunAsNonRoot",id:"logSearch_securityContext_runAsNonRoot",name:"logSearch_securityContext_runAsNonRoot",checked:M.runAsNonRoot,onChange:function(e){var t=e.target.checked;H("logSearchSecurityContext",(0,s.Z)((0,s.Z)({},M),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]}),(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for PostgreSQL"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"postgres_securityContext_runAsUser",name:"postgres_securityContext_runAsUser",onChange:function(e){H("logSearchPostgresSecurityContext",(0,s.Z)((0,s.Z)({},q),{},{runAsUser:e.target.value})),Y("postgres_securityContext_runAsUser")},label:"Run As User",value:q.runAsUser,required:!0,error:B.postgres_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"postgres_securityContext_runAsGroup",name:"postgres_securityContext_runAsGroup",onChange:function(e){H("logSearchPostgresSecurityContext",(0,s.Z)((0,s.Z)({},q),{},{runAsGroup:e.target.value})),Y("postgres_securityContext_runAsGroup")},label:"Run As Group",value:q.runAsGroup,required:!0,error:B.postgres_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"postgres_securityContext_fsGroup",name:"postgres_securityContext_fsGroup",onChange:function(e){H("logSearchPostgresSecurityContext",(0,s.Z)((0,s.Z)({},q),{},{fsGroup:e.target.value})),Y("postgres_securityContext_fsGroup")},label:"FsGroup",value:q.fsGroup,required:!0,error:B.postgres_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(N.Z,{value:"postgresSecurityContextRunAsNonRoot",id:"postgres_securityContext_runAsNonRoot",name:"postgres_securityContext_runAsNonRoot",checked:q.runAsNonRoot,onChange:function(e){var t=e.target.checked;H("logSearchPostgresSecurityContext",(0,s.Z)((0,s.Z)({},q),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"prometheusConfig",id:"prometheus_configuration",name:"prometheus_configuration",checked:f,onChange:function(e){var t=e.target.checked;H("prometheusCustom",t)},label:"Override Prometheus defaults"})}),f&&(0,T.jsxs)(d.ZP,{xs:12,className:t.prometheusCustomFields,children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(A.Z,{id:"prometheus_storage_class",name:"prometheus_storage_class",onChange:function(e){H("prometheusSelectedStorageClass",e.target.value)},label:"Prometheus Storage Class",value:z,options:W,disabled:W.length<1})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(I.Z,{type:"number",id:"prometheus_volume_size",name:"prometheus_volume_size",onChange:function(e){H("prometheusVolumeSize",e.target.value),Y("prometheus_volume_size")},label:"Storage Size [Gi]",value:k,required:!0,error:B.prometheus_volume_size||"",min:"0"})})}),(0,T.jsxs)("fieldset",{className:"".concat(t.fieldGroup," ").concat(t.fieldSpaceTop),children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for Prometheus"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_runAsUser",name:"prometheus_securityContext_runAsUser",onChange:function(e){H("prometheusSecurityContext",(0,s.Z)((0,s.Z)({},G),{},{runAsUser:e.target.value})),Y("prometheus_securityContext_runAsUser")},label:"Run As User",value:G.runAsUser,required:!0,error:B.prometheus_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_runAsGroup",name:"prometheus_securityContext_runAsGroup",onChange:function(e){H("prometheusSecurityContext",(0,s.Z)((0,s.Z)({},G),{},{runAsGroup:e.target.value})),Y("prometheus_securityContext_runAsGroup")},label:"Run As Group",value:G.runAsGroup,required:!0,error:B.prometheus_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_fsGroup",name:"prometheus_securityContext_fsGroup",onChange:function(e){H("prometheusSecurityContext",(0,s.Z)((0,s.Z)({},G),{},{fsGroup:e.target.value})),Y("prometheus_securityContext_fsGroup")},label:"FsGroup",value:G.fsGroup,required:!0,error:B.prometheus_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)("div",{className:"".concat(t.multiContainer," ").concat(t.fieldSpaceTop),children:(0,T.jsx)(N.Z,{value:"prometheusSecurityContextRunAsNonRoot",id:"prometheus_securityContext_runAsNonRoot",name:"prometheus_securityContext_runAsNonRoot",checked:G.runAsNonRoot,onChange:function(e){var t=e.target.checked;H("prometheusSecurityContext",(0,s.Z)((0,s.Z)({},G),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]})]})}))),z=n(94187),w=n(95467),F=n(35477),D=n(94759),E=n(43615),U=n(27207),K=n(96152),L=n(35150),M=(0,u.$j)((function(e){return{idpSelection:e.tenants.createTenant.fields.identityProvider.idpSelection,accessKeys:e.tenants.createTenant.fields.identityProvider.accessKeys,secretKeys:e.tenants.createTenant.fields.identityProvider.secretKeys,openIDConfigurationURL:e.tenants.createTenant.fields.identityProvider.openIDConfigurationURL,openIDClientID:e.tenants.createTenant.fields.identityProvider.openIDClientID,openIDSecretID:e.tenants.createTenant.fields.identityProvider.openIDSecretID,openIDCallbackURL:e.tenants.createTenant.fields.identityProvider.openIDCallbackURL,openIDClaimName:e.tenants.createTenant.fields.identityProvider.openIDClaimName,openIDScopes:e.tenants.createTenant.fields.identityProvider.openIDScopes,ADURL:e.tenants.createTenant.fields.identityProvider.ADURL,ADSkipTLS:e.tenants.createTenant.fields.identityProvider.ADSkipTLS,ADServerInsecure:e.tenants.createTenant.fields.identityProvider.ADServerInsecure,ADUserNameSearchFilter:e.tenants.createTenant.fields.identityProvider.ADUserNameSearchFilter,ADGroupSearchBaseDN:e.tenants.createTenant.fields.identityProvider.ADGroupSearchBaseDN,ADGroupSearchFilter:e.tenants.createTenant.fields.identityProvider.ADGroupSearchFilter,ADGroupNameAttribute:e.tenants.createTenant.fields.identityProvider.ADGroupNameAttribute,ADUserDNs:e.tenants.createTenant.fields.identityProvider.ADUserDNs,ADUserNameFormat:e.tenants.createTenant.fields.identityProvider.ADUserNameFormat,ADLookupBindDN:e.tenants.createTenant.fields.identityProvider.ADLookupBindDN,ADLookupBindPassword:e.tenants.createTenant.fields.identityProvider.ADLookupBindPassword,ADUserDNSearchBaseDN:e.tenants.createTenant.fields.identityProvider.ADUserDNSearchBaseDN,ADUserDNSearchFilter:e.tenants.createTenant.fields.identityProvider.ADUserDNSearchFilter,ADServerStartTLS:e.tenants.createTenant.fields.identityProvider.ADServerStartTLS}}),{updateAddField:j.HM,isPageValid:j.NO}),q=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)((0,s.Z)({shortened:{gridTemplateColumns:"auto auto 50px 50px",display:"grid",gridGap:15,marginBottom:10,"& input":{fontWeight:400}},buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},protocolRadioOptions:{display:"flex",flexFlow:"column",marginBottom:10,"& label":{fontSize:14},"& div":{display:"flex",flexFlow:"column",alignItems:"baseline"}},adUserDnRows:{display:"flex"}},f.QV),f.DF),f.oO),f.AK))}))(M((function(e){var t=e.classes,n=e.idpSelection,a=e.accessKeys,r=e.secretKeys,s=e.openIDConfigurationURL,l=e.openIDClientID,c=e.openIDSecretID,u=e.openIDCallbackURL,m=e.openIDClaimName,p=e.openIDScopes,g=e.ADURL,f=e.ADSkipTLS,h=e.ADServerInsecure,x=e.ADUserNameSearchFilter,v=e.ADGroupSearchBaseDN,y=e.ADGroupSearchFilter,C=e.ADGroupNameAttribute,S=e.ADUserDNs,j=e.ADUserNameFormat,A=e.ADLookupBindDN,k=e.ADLookupBindPassword,R=e.ADUserDNSearchBaseDN,M=e.ADUserDNSearchFilter,q=e.ADServerStartTLS,G=e.updateAddField,V=e.isPageValid,O=(0,o.useState)({}),B=(0,i.Z)(O,2),$=B[0],W=B[1],H=(0,o.useCallback)((function(e,t){G("identityProvider",e,t)}),[G]),Y=function(e,t){var n=(0,Z.Z)(a);n[e]=t,H("accessKeys",n)},Q=function(e,t){var n=(0,Z.Z)(r);n[e]=t,H("secretKeys",n)},X=function(e,t){var n=(0,Z.Z)(S);n[e]=t,H("ADUserDNs",n)},J=function(e){W((0,_.h)($,e))};(0,o.useEffect)((function(){var e=[];if("Built-in"===n){e=(0,Z.Z)(e);for(var t=0;t1&&(a.splice(n,1),r.splice(n,1),Y(a.length-1,a[a.length-1]))},children:(0,T.jsx)(L.Z,{})})})}),(0,T.jsx)(z.Z,{title:"Randomize Credentials","aria-label":"add",children:(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(w.Z,{onClick:function(){Y(n,(0,_.z)(16)),Q(n,(0,_.z)(32))},size:"small",children:(0,T.jsx)(D.Z,{})})})})]})]})},"identityField-".concat(n.toString()))}))),"AD"===n&&(ee=S.map((function(e,n){return(0,T.jsx)(o.Fragment,{children:(0,T.jsxs)("div",{className:t.adUserDnRows,children:[(0,T.jsx)(I.Z,{id:"ad-userdn-".concat(n.toString()),label:"",placeholder:"",name:"ad-userdn-".concat(n.toString()),value:S[n],onChange:function(e){X(n,e.target.value),J("ad-userdn-".concat(n.toString()))},index:n,error:$["ad-userdn-".concat(n.toString())]||""},"csv-ad-userdn-".concat(n.toString())),(0,T.jsxs)("div",{className:t.buttonTray,children:[(0,T.jsx)(z.Z,{title:"Add User","aria-label":"add",children:(0,T.jsx)(w.Z,{size:"small",onClick:function(){S.push(""),X(S.length-1,"")},children:(0,T.jsx)(K.Z,{})})}),(0,T.jsx)(z.Z,{title:"Remove","aria-label":"add",children:(0,T.jsx)(w.Z,{size:"small",style:{marginLeft:16},onClick:function(){S.length>1&&(S.splice(n,1),Y(S.length-1,S[S.length-1]))},children:(0,T.jsx)(E.Z,{})})})]})]})},"identityField-".concat(n.toString()))}))),(0,T.jsxs)(b.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Identity Provider"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Access to the tenant can be controlled via an external Identity Manager."})]}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.protocolRadioOptions,children:[(0,T.jsx)("label",{children:"Protocol"}),(0,T.jsx)(U.Z,{currentSelection:n,id:"idp-options",name:"idp-options",label:" ",onChange:function(e){H("idpSelection",e.target.value)},selectorOptions:[{label:"Built-in",value:"Built-in"},{label:"OpenID",value:"OpenID"},{label:"Active Directory",value:"AD"}]})]}),"Built-in"===n&&(0,T.jsxs)(o.Fragment,{children:["Add additional users",ee]}),"OpenID"===n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_CONFIGURATION_URL",name:"openID_CONFIGURATION_URL",onChange:function(e){H("openIDConfigurationURL",e.target.value),J("openID_CONFIGURATION_URL")},label:"Configuration URL",value:s,placeholder:"https://your-identity-provider.com/.well-known/openid-configuration",error:$.openID_CONFIGURATION_URL||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_clientID",name:"openID_clientID",onChange:function(e){H("openIDClientID",e.target.value),J("openID_clientID")},label:"Client ID",value:l,error:$.openID_clientID||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_secretID",name:"openID_secretID",onChange:function(e){H("openIDSecretID",e.target.value),J("openID_secretID")},label:"Secret ID",value:c,error:$.openID_secretID||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_callbackURL",name:"openID_callbackURL",onChange:function(e){H("openIDCallbackURL",e.target.value),J("openID_callbackURL")},label:"Callback URL",value:u,placeholder:"https://your-console-endpoint:9443/oauth_callback",error:$.openID_callbackURL||""})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_claimName",name:"openID_claimName",onChange:function(e){H("openIDClaimName",e.target.value),J("openID_claimName")},label:"Claim Name",value:m,error:$.openID_claimName||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_scopes",name:"openID_scopes",onChange:function(e){H("openIDScopes",e.target.value),J("openID_scopes")},label:"Scopes",value:p})})]}),"AD"===n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"AD_URL",name:"AD_URL",onChange:function(e){H("ADURL",e.target.value),J("AD_URL")},label:"LDAP Server Address",value:g,placeholder:"ldap-server:636",error:$.AD_URL||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(N.Z,{value:"ad_skipTLS",id:"ad_skipTLS",name:"ad_skipTLS",checked:f,onChange:function(e){var t=e.target.checked;H("ADSkipTLS",t)},label:"Skip TLS Verification"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(N.Z,{value:"ad_serverInsecure",id:"ad_serverInsecure",name:"ad_serverInsecure",checked:h,onChange:function(e){var t=e.target.checked;H("ADServerInsecure",t)},label:"Server Insecure"})}),h?(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)(F.Z,{className:t.error,variant:"caption",display:"block",gutterBottom:!0,children:"Warning: All traffic with Active Directory will be unencrypted"}),(0,T.jsx)("br",{})]}):null,(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(N.Z,{value:"ad_serverStartTLS",id:"ad_serverStartTLS",name:"ad_serverStartTLS",checked:q,onChange:function(e){var t=e.target.checked;H("ADServerStartTLS",t)},label:"Start TLS connection to AD/LDAP server"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_userNameFormat",name:"ad_userNameFormat",onChange:function(e){H("ADUserNameFormat",e.target.value)},label:"Username Format",value:j,placeholder:"uid=%s,cn=accounts,dc=myldapserver,dc=com"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_userNameFilter",name:"ad_userNameFilter",onChange:function(e){H("ADUserNameSearchFilter",e.target.value)},label:"Username Search Filter",value:x,placeholder:"(|(objectclass=posixAccount)(uid=%s))"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_groupSearchBaseDN",name:"ad_groupSearchBaseDN",onChange:function(e){H("ADGroupSearchBaseDN",e.target.value)},label:"Group Search Base DN",value:v,placeholder:"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_groupSearchFilter",name:"ad_groupSearchFilter",onChange:function(e){H("ADGroupSearchFilter",e.target.value)},label:"Group Search Filter",value:y,placeholder:"(&(objectclass=groupOfNames)(member=%s))"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_groupNameAttribute",name:"ad_groupNameAttribute",onChange:function(e){H("ADGroupNameAttribute",e.target.value)},label:"Group Name Attribute",value:C,placeholder:"cn"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_lookupBindDN",name:"ad_lookupBindDN",onChange:function(e){H("ADLookupBindDN",e.target.value)},label:"Lookup Bind DN",value:A,placeholder:"cn=admin,dc=min,dc=io"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_lookupBindPassword",name:"ad_lookupBindPassword",onChange:function(e){H("ADLookupBindPassword",e.target.value)},label:"Lookup Bind Password",value:k,placeholder:"admin"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_userDNSearchBaseDN",name:"ad_userDNSearchBaseDN",onChange:function(e){H("ADUserDNSearchBaseDN",e.target.value)},label:"User DN Search Base DN",value:R,placeholder:"dc=min,dc=io"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_userDNSearchFilter",name:"ad_userDNSearchFilter",onChange:function(e){H("ADUserDNSearchFilter",e.target.value)},label:"User DN Search Filter",value:M,placeholder:"(uid=%s)"})}),(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"List of user DNs (Distinguished Names) to be Tenant Administrators"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:ee})]})]})]})}))),G=n(82461),V=n(14792),O=(0,u.$j)((function(e){return{enableTLS:e.tenants.createTenant.fields.security.enableTLS,enableAutoCert:e.tenants.createTenant.fields.security.enableAutoCert,enableCustomCerts:e.tenants.createTenant.fields.security.enableCustomCerts,minioCertificates:e.tenants.createTenant.certificates.minioCertificates,caCertificates:e.tenants.createTenant.certificates.caCertificates}}),{updateAddField:j.HM,isPageValid:j.NO,addFileToCaCertificates:j.Eq,deleteCaCertificate:j.IG,addCaCertificate:j.fK,addKeyPair:j.Mg,addFileToKeyPair:j.aN,deleteKeyPair:j.XX}),B=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)({minioCertificateRows:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1}},fileItem:{marginRight:10,display:"flex","& div label":{minWidth:50},"@media (max-width: 900px)":{flexFlow:"column"}},minioCertsContainer:{marginBottom:15},minioCACertsRow:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1,"& div label":{minWidth:50}}},rowActions:{display:"flex",justifyContent:"flex-end","@media (max-width: 900px)":{flex:1}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}}},f.QV),f.oO),f.AK))}))(O((function(e){var t=e.classes,n=e.enableTLS,a=e.enableAutoCert,r=e.enableCustomCerts,i=e.minioCertificates,s=e.caCertificates,l=e.updateAddField,c=e.isPageValid,u=e.addFileToCaCertificates,m=e.deleteCaCertificate,p=e.addCaCertificate,g=e.addKeyPair,f=e.addFileToKeyPair,h=e.deleteKeyPair,x=(0,o.useCallback)((function(e,t){l("security",e,t)}),[l]);return(0,o.useEffect)((function(){c("security",!n||(!!a||!!r))}),[n,a,r,c]),(0,T.jsxs)(b.Z,{className:t.paperWrapper,children:[(0,T.jsx)("div",{className:t.headerElement,children:(0,T.jsx)("h3",{className:t.h3Section,children:"Security"})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)(N.Z,{value:"enableTLS",id:"enableTLS",name:"enableTLS",checked:n,onChange:function(e){var t=e.target.checked;x("enableTLS",t)},label:"Enable TLS"}),"Enable TLS for the tenant, this is required for Encryption Configuration",n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("br",{}),(0,T.jsx)("br",{}),(0,T.jsx)(F.Z,{variant:"caption",display:"block",gutterBottom:!0,children:"AutoCert: MinIO Operator will generate all TLS certificates automatically"}),(0,T.jsx)(F.Z,{variant:"caption",display:"block",gutterBottom:!0,children:"Custom certificates: Allow user to provide your own certificates"}),(0,T.jsx)("br",{})]})]}),n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)(N.Z,{value:"enableAutoCert",id:"enableAutoCert",name:"enableAutoCert",checked:a,onChange:function(e){var t=e.target.checked;x("enableAutoCert",t)},label:"Enable AutoCert"}),(0,T.jsx)(N.Z,{value:"enableCustomCerts",id:"enableCustomCerts",name:"enableCustomCerts",checked:r,onChange:function(e){var t=e.target.checked;x("enableCustomCerts",t)},label:"Custom Certificates"})]}),r&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{container:!0,children:(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.minioCertsContainer,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"MinIO Certificates"}),i.map((function(e){return(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.minioCertificateRows,children:[(0,T.jsxs)(d.ZP,{item:!0,xs:10,className:t.fileItem,children:[(0,T.jsx)(G.Z,{onChange:function(t,n){f(e.id,"cert",n,t)},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert}),(0,T.jsx)(G.Z,{onChange:function(t,n){f(e.id,"key",n,t)},accept:".key,.pem",id:"tlsKey",name:"tlsKey",label:"Key",value:e.key})]}),(0,T.jsxs)(d.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(w.Z,{size:"small",onClick:g,children:(0,T.jsx)(V.Z,{})})}),(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(w.Z,{size:"small",onClick:function(){h(e.id)},children:(0,T.jsx)(L.Z,{})})})]})]},e.id)}))]})})}),(0,T.jsx)(d.ZP,{container:!0,children:(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.minioCertsContainer,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"MinIO CA Certificates"}),s.map((function(e){return(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.minioCACertsRow,children:[(0,T.jsx)(d.ZP,{item:!0,xs:6,children:(0,T.jsx)(G.Z,{onChange:function(t,n){u(e.id,"cert",n,t)},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert})}),(0,T.jsx)(d.ZP,{item:!0,xs:6,children:(0,T.jsxs)("div",{className:t.rowActions,children:[(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(w.Z,{size:"small",onClick:p,children:(0,T.jsx)(V.Z,{})})}),(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(w.Z,{size:"small",onClick:function(){m(e.id)},children:(0,T.jsx)(L.Z,{})})})]})})]},e.id)}))]})})})]})]})]})}))),$=(0,u.$j)((function(e){return{replicas:e.tenants.createTenant.fields.encryption.replicas,enableEncryption:e.tenants.createTenant.fields.encryption.enableEncryption,encryptionType:e.tenants.createTenant.fields.encryption.encryptionType,gemaltoEndpoint:e.tenants.createTenant.fields.encryption.gemaltoEndpoint,gemaltoToken:e.tenants.createTenant.fields.encryption.gemaltoToken,gemaltoDomain:e.tenants.createTenant.fields.encryption.gemaltoDomain,gemaltoRetry:e.tenants.createTenant.fields.encryption.gemaltoRetry,awsEndpoint:e.tenants.createTenant.fields.encryption.awsEndpoint,awsRegion:e.tenants.createTenant.fields.encryption.awsRegion,awsKMSKey:e.tenants.createTenant.fields.encryption.awsKMSKey,awsAccessKey:e.tenants.createTenant.fields.encryption.awsAccessKey,awsSecretKey:e.tenants.createTenant.fields.encryption.awsSecretKey,awsToken:e.tenants.createTenant.fields.encryption.awsToken,vaultEndpoint:e.tenants.createTenant.fields.encryption.vaultEndpoint,vaultEngine:e.tenants.createTenant.fields.encryption.vaultEngine,vaultNamespace:e.tenants.createTenant.fields.encryption.vaultNamespace,vaultPrefix:e.tenants.createTenant.fields.encryption.vaultPrefix,vaultAppRoleEngine:e.tenants.createTenant.fields.encryption.vaultAppRoleEngine,vaultId:e.tenants.createTenant.fields.encryption.vaultId,vaultSecret:e.tenants.createTenant.fields.encryption.vaultSecret,vaultRetry:e.tenants.createTenant.fields.encryption.vaultRetry,vaultPing:e.tenants.createTenant.fields.encryption.vaultPing,azureEndpoint:e.tenants.createTenant.fields.encryption.azureEndpoint,azureTenantID:e.tenants.createTenant.fields.encryption.azureTenantID,azureClientID:e.tenants.createTenant.fields.encryption.azureClientID,azureClientSecret:e.tenants.createTenant.fields.encryption.azureClientSecret,gcpProjectID:e.tenants.createTenant.fields.encryption.gcpProjectID,gcpEndpoint:e.tenants.createTenant.fields.encryption.gcpEndpoint,gcpClientEmail:e.tenants.createTenant.fields.encryption.gcpClientEmail,gcpClientID:e.tenants.createTenant.fields.encryption.gcpClientID,gcpPrivateKeyID:e.tenants.createTenant.fields.encryption.gcpPrivateKeyID,gcpPrivateKey:e.tenants.createTenant.fields.encryption.gcpPrivateKey,enableCustomCertsForKES:e.tenants.createTenant.fields.encryption.enableCustomCertsForKES,enableAutoCert:e.tenants.createTenant.fields.security.enableAutoCert,enableTLS:e.tenants.createTenant.fields.security.enableTLS,minioCertificates:e.tenants.createTenant.certificates.minioCertificates,serverCertificate:e.tenants.createTenant.certificates.serverCertificate,clientCertificate:e.tenants.createTenant.certificates.clientCertificate,vaultCertificate:e.tenants.createTenant.certificates.vaultCertificate,vaultCA:e.tenants.createTenant.certificates.vaultCA,gemaltoCA:e.tenants.createTenant.certificates.gemaltoCA,enableCustomCerts:e.tenants.createTenant.fields.security.enableCustomCerts,kesSecurityContext:e.tenants.createTenant.fields.encryption.kesSecurityContext}}),{updateAddField:j.HM,isPageValid:j.NO,addFileServerCert:j.$1,addFileClientCert:j.BI,addFileVaultCert:j.cl,addFileVaultCa:j.fk,addFileGemaltoCa:j.MX}),W=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)((0,s.Z)({encryptionTypeOptions:{marginBottom:15},mutualTlsConfig:{marginTop:15,"& fieldset":{flex:1}},rightSpacer:{marginRight:15},responsiveContainer:{"@media (max-width: 900px)":{display:"flex",flexFlow:"column"}}},f.QV),f.DF),f.oO),f.AK))}))($((function(e){var t=e.classes,n=e.updateAddField,a=e.isPageValid,r=e.addFileServerCert,l=e.addFileClientCert,c=e.addFileVaultCert,u=e.addFileVaultCa,m=e.addFileGemaltoCa,p=e.enableEncryption,g=e.enableCustomCerts,f=e.encryptionType,h=e.gemaltoEndpoint,x=e.gemaltoToken,v=e.gemaltoDomain,y=e.gemaltoRetry,C=e.awsEndpoint,S=e.awsRegion,j=e.awsKMSKey,A=e.awsAccessKey,k=e.awsSecretKey,R=e.awsToken,z=e.vaultEndpoint,w=e.vaultEngine,F=e.vaultNamespace,D=e.vaultPrefix,E=e.vaultAppRoleEngine,K=e.vaultId,L=e.vaultSecret,M=e.vaultRetry,q=e.vaultPing,V=e.azureEndpoint,O=e.azureTenantID,B=e.azureClientID,$=e.azureClientSecret,W=e.gcpProjectID,H=e.gcpEndpoint,Y=e.gcpClientEmail,Q=e.gcpClientID,X=e.gcpPrivateKeyID,J=e.gcpPrivateKey,ee=e.enableCustomCertsForKES,te=e.enableAutoCert,ne=e.enableTLS,ae=e.minioCertificates,re=e.serverCertificate,ie=e.clientCertificate,se=e.vaultCertificate,oe=e.vaultCA,le=e.gemaltoCA,ce=e.kesSecurityContext,ue=e.replicas,de=(0,o.useState)({}),me=(0,i.Z)(de,2),pe=me[0],ge=me[1],fe=!1;ne&&(te||ae&&ae.filter((function(e){return e.encoded_key&&e.encoded_cert})).length>0)&&(fe=!0);var he=(0,o.useCallback)((function(e,t){n("encryption",e,t)}),[n]),xe=function(e){ge((0,_.h)(pe,e))};return(0,o.useEffect)((function(){var e=[];p&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"replicas",required:!0,value:ue,customValidation:parseInt(ue)<1,customValidationMessage:"Replicas needs to be 1 or greater"},{fieldKey:"kes_securityContext_runAsUser",required:!0,value:ce.runAsUser,customValidation:""===ce.runAsUser||parseInt(ce.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"kes_securityContext_runAsGroup",required:!0,value:ce.runAsGroup,customValidation:""===ce.runAsGroup||parseInt(ce.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"kes_securityContext_fsGroup",required:!0,value:ce.fsGroup,customValidation:""===ce.fsGroup||parseInt(ce.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}]),g&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"serverKey",required:!te,value:re.encoded_key},{fieldKey:"serverCert",required:!te,value:re.encoded_cert},{fieldKey:"clientKey",required:!te,value:ie.encoded_key},{fieldKey:"clientCert",required:!te,value:ie.encoded_cert}])),"vault"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"vault_endpoint",required:!0,value:z},{fieldKey:"vault_id",required:!0,value:K},{fieldKey:"vault_secret",required:!0,value:L},{fieldKey:"vault_ping",required:!1,value:q,customValidation:parseInt(q)<0,customValidationMessage:"Value needs to be 0 or greater"},{fieldKey:"vault_retry",required:!1,value:M,customValidation:parseInt(M)<0,customValidationMessage:"Value needs to be 0 or greater"}])),"aws"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"aws_endpoint",required:!0,value:C},{fieldKey:"aws_region",required:!0,value:S},{fieldKey:"aws_accessKey",required:!0,value:A},{fieldKey:"aws_secretKey",required:!0,value:k}])),"gemalto"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"gemalto_endpoint",required:!0,value:h},{fieldKey:"gemalto_token",required:!0,value:x},{fieldKey:"gemalto_domain",required:!0,value:v},{fieldKey:"gemalto_retry",required:!1,value:y,customValidation:parseInt(y)<0,customValidationMessage:"Value needs to be 0 or greater"}])),"azure"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"azure_endpoint",required:!0,value:V},{fieldKey:"azure_tenant_id",required:!0,value:O},{fieldKey:"azure_client_id",required:!0,value:B},{fieldKey:"azure_client_secret",required:!0,value:$}])));var t=(0,P.R)(e);a("encryption",0===Object.keys(t).length),ge(t)}),[p,f,z,w,K,L,q,M,C,S,k,A,h,x,v,y,W,H,Y,Q,X,J,V,O,B,$,a,te,g,re.encoded_key,re.encoded_cert,ie.encoded_key,ie.encoded_cert,ce,ue]),(0,T.jsxs)(b.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Encryption"}),(0,T.jsx)("span",{className:t.descriptionText,children:"How would you like to encrypt the information at rest."})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(N.Z,{value:"enableEncryption",id:"enableEncryption",name:"enableEncryption",checked:p,onChange:function(e){var t=e.target.checked;he("enableEncryption",t)},label:"Enable Server Side Encryption",disabled:!fe})}),p&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.encryptionTypeOptions,children:(0,T.jsx)(U.Z,{currentSelection:f,id:"encryptionType",name:"encryptionType",label:"Encryption Options",onChange:function(e){he("encryptionType",e.target.value)},selectorOptions:[{label:"Vault",value:"vault"},{label:"AWS",value:"aws"},{label:"Gemalto",value:"gemalto"},{label:"GCP",value:"gcp"},{label:"Azure",value:"azure"}]})}),"vault"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(N.Z,{value:"enableCustomCertsForKES",id:"enableCustomCertsForKES",name:"enableCustomCertsForKES",checked:ee||!te,onChange:function(e){var t=e.target.checked;he("enableCustomCertsForKES",t)},label:"Custom Certificates",disabled:!te})}),(ee||!te)&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{container:!0,children:(0,T.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Encryption Service Certificates"}),(0,T.jsx)(G.Z,{onChange:function(e,t){r("key",t,e),xe("serverKey")},accept:".key,.pem",id:"serverKey",name:"serverKey",label:"Key",error:pe.serverKey||"",value:re.key,required:!te}),(0,T.jsx)(G.Z,{onChange:function(e,t){r("cert",t,e),xe("serverCert")},accept:".cer,.crt,.cert,.pem",id:"serverCert",name:"serverCert",label:"Cert",error:pe.serverCert||"",value:re.cert,required:!te})]})})}),(0,T.jsx)(d.ZP,{container:!0,style:{marginBottom:15},children:(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Mutual TLS authentication"}),(0,T.jsx)(G.Z,{onChange:function(e,t){l("key",t,e),xe("clientKey")},accept:".key,.pem",id:"clientKey",name:"clientKey",label:"Key",error:pe.clientKey||"",value:ie.key,required:!te}),(0,T.jsx)(G.Z,{onChange:function(e,t){l("cert",t,e),xe("clientCert")},accept:".cer,.crt,.cert,.pem",id:"clientCert",name:"clientCert",label:"Cert",error:pe.clientCert||"",value:ie.cert,required:!te})]})})})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_endpoint",name:"vault_endpoint",onChange:function(e){he("vaultEndpoint",e.target.value),xe("vault_endpoint")},label:"Endpoint",value:z,error:pe.vault_endpoint||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_engine",name:"vault_engine",onChange:function(e){he("vaultEngine",e.target.value),xe("vault_engine")},label:"Engine",value:w})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_namespace",name:"vault_namespace",onChange:function(e){he("vaultNamespace",e.target.value)},label:"Namespace",value:F})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_prefix",name:"vault_prefix",onChange:function(e){he("vaultPrefix",e.target.value)},label:"Prefix",value:D})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"App Role"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_approle_engine",name:"vault_approle_engine",onChange:function(e){he("vaultAppRoleEngine",e.target.value)},label:"Engine",value:E})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_id",name:"vault_id",onChange:function(e){he("vaultId",e.target.value),xe("vault_id")},label:"AppRole ID",value:K,error:pe.vault_id||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_secret",name:"vault_secret",onChange:function(e){he("vaultSecret",e.target.value),xe("vault_secret")},label:"AppRole Secret",value:L,error:pe.vault_secret||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{type:"number",min:"0",id:"vault_retry",name:"vault_retry",onChange:function(e){he("vaultRetry",e.target.value),xe("vault_retry")},label:"Retry (Seconds)",value:M,error:pe.vault_retry||""})})]})}),(0,T.jsx)(d.ZP,{container:!0,className:t.mutualTlsConfig,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Mutual TLS authentication (optional)"}),(0,T.jsx)(G.Z,{onChange:function(e,t){c("key",t,e),xe("vault_key")},accept:".key,.pem",id:"vault_key",name:"vault_key",label:"Key",value:se.key}),(0,T.jsx)(G.Z,{onChange:function(e,t){c("cert",t,e),xe("vault_cert")},accept:".cer,.crt,.cert,.pem",id:"vault_cert",name:"vault_cert",label:"Cert",value:se.cert}),(0,T.jsx)(G.Z,{onChange:function(e,t){u(t,e),xe("vault_ca")},accept:".cer,.crt,.cert,.pem",id:"vault_ca",name:"vault_ca",label:"CA",value:oe.cert})]})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,style:{marginTop:15},children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Status"}),(0,T.jsx)(I.Z,{type:"number",min:"0",id:"vault_ping",name:"vault_ping",onChange:function(e){he("vaultPing",e.target.value),xe("vault_ping")},label:"Ping (Seconds)",value:q,error:pe.vault_ping||""})]})})]}),"azure"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"azure_endpoint",name:"azure_endpoint",onChange:function(e){he("azureEndpoint",e.target.value),xe("azure_endpoint")},label:"Endpoint",value:V,error:pe.azure_endpoint||""})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"azure_tenant_id",name:"azure_tenant_id",onChange:function(e){he("azureTenantID",e.target.value),xe("azure_tenant_id")},label:"Tenant ID",value:O,error:pe.azure_tenant_id||""})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"azure_client_id",name:"azure_client_id",onChange:function(e){he("azureClientID",e.target.value),xe("azure_client_id")},label:"Client ID",value:B,error:pe.azure_client_id||""})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"azure_client_secret",name:"azure_client_secret",onChange:function(e){he("azureClientSecret",e.target.value),xe("azure_client_secret")},label:"Client Secret",value:$,error:pe.azure_client_secret||""})})]})})]}),"gcp"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_project_id",name:"gcp_project_id",onChange:function(e){he("gcpProjectID",e.target.value)},label:"Project ID",value:W})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_endpoint",name:"gcp_endpoint",onChange:function(e){he("gcpEndpoint",e.target.value)},label:"Endpoint",value:H})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_client_email",name:"gcp_client_email",onChange:function(e){he("gcpClientEmail",e.target.value)},label:"Client Email",value:Y})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_client_id",name:"gcp_client_id",onChange:function(e){he("gcpClientID",e.target.value)},label:"Client ID",value:Q})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_private_key_id",name:"gcp_private_key_id",onChange:function(e){he("gcpPrivateKeyID",e.target.value)},label:"Private Key ID",value:X})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_private_key",name:"gcp_private_key",onChange:function(e){he("gcpPrivateKey",e.target.value)},label:"Private Key",value:J})})]})})]}),"aws"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_endpoint",name:"aws_endpoint",onChange:function(e){he("awsEndpoint",e.target.value),xe("aws_endpoint")},label:"Endpoint",value:C,error:pe.aws_endpoint||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_region",name:"aws_region",onChange:function(e){he("awsRegion",e.target.value),xe("aws_region")},label:"Region",value:S,error:pe.aws_region||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_kmsKey",name:"aws_kmsKey",onChange:function(e){he("awsKMSKey",e.target.value)},label:"KMS Key",value:j})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_accessKey",name:"aws_accessKey",onChange:function(e){he("awsAccessKey",e.target.value),xe("aws_accessKey")},label:"Access Key",value:A,error:pe.aws_accessKey||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_secretKey",name:"aws_secretKey",onChange:function(e){he("awsSecretKey",e.target.value),xe("aws_secretKey")},label:"Secret Key",value:k,error:pe.aws_secretKey||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_token",name:"aws_token",onChange:function(e){he("awsToken",e.target.value)},label:"Token",value:R})})]})})]}),"gemalto"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gemalto_endpoint",name:"gemalto_endpoint",onChange:function(e){he("gemaltoEndpoint",e.target.value),xe("gemalto_endpoint")},label:"Endpoint",value:h,error:pe.gemalto_endpoint||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gemalto_token",name:"gemalto_token",onChange:function(e){he("gemaltoToken",e.target.value),xe("gemalto_token")},label:"Token",value:x,error:pe.gemalto_token||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gemalto_domain",name:"gemalto_domain",onChange:function(e){he("gemaltoDomain",e.target.value),xe("gemalto_domain")},label:"Domain",value:v,error:pe.gemalto_domain||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{type:"number",min:"0",id:"gemalto_retry",name:"gemalto_retry",onChange:function(e){he("gemaltoRetry",e.target.value),xe("gemalto_retry")},label:"Retry (seconds)",value:y,error:pe.gemalto_retry||""})})]})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Custom CA Root certificate verification"}),(0,T.jsx)(G.Z,{onChange:function(e,t){m(t,e),xe("gemalto_ca")},accept:".cer,.crt,.cert,.pem",id:"gemalto_ca",name:"gemalto_ca",label:"CA",value:le.cert})]})})]}),(0,T.jsx)("div",{className:t.headerElement,children:(0,T.jsx)("h4",{className:t.h3Section,children:"Additional Configurations"})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,classes:t.formFieldRow,children:(0,T.jsx)(I.Z,{type:"number",min:"1",id:"replicas",name:"replicas",onChange:function(e){he("replicas",e.target.value),xe("replicas")},label:"Replicas",value:ue,required:!0,error:pe.replicas||""})}),(0,T.jsxs)("fieldset",{className:t.fieldGroup,style:{marginTop:15},children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for KES pods"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.kesSecurityContext,children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveContainer),children:[(0,T.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,T.jsx)(I.Z,{type:"number",id:"kes_securityContext_runAsUser",name:"kes_securityContext_runAsUser",onChange:function(e){he("kesSecurityContext",(0,s.Z)((0,s.Z)({},ce),{},{runAsUser:e.target.value})),xe("kes_securityContext_runAsUser")},label:"Run As User",value:ce.runAsUser,required:!0,error:pe.kes_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,T.jsx)(I.Z,{type:"number",id:"kes_securityContext_runAsGroup",name:"kes_securityContext_runAsGroup",onChange:function(e){he("kesSecurityContext",(0,s.Z)((0,s.Z)({},ce),{},{runAsGroup:e.target.value})),xe("kes_securityContext_runAsGroup")},label:"Run As Group",value:ce.runAsGroup,required:!0,error:pe.kes_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,T.jsx)(I.Z,{type:"number",id:"kes_securityContext_fsGroup",name:"kes_securityContext_fsGroup",onChange:function(e){he("kesSecurityContext",(0,s.Z)((0,s.Z)({},ce),{},{fsGroup:e.target.value})),xe("kes_securityContext_fsGroup")},label:"FsGroup",value:ce.fsGroup,required:!0,error:pe.kes_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(N.Z,{value:"kesSecurityContextRunAsNonRoot",id:"kes_securityContext_runAsNonRoot",name:"kes_securityContext_runAsNonRoot",checked:ce.runAsNonRoot,onChange:function(e){var t=e.target.checked;he("kesSecurityContext",(0,s.Z)((0,s.Z)({},ce),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]})]})]})}))),H=(0,u.$j)((function(e){var t=e.tenants.createTenant;return{podAffinity:t.fields.affinity.podAffinity,nodeSelectorLabels:t.fields.affinity.nodeSelectorLabels,withPodAntiAffinity:t.fields.affinity.withPodAntiAffinity,keyValuePairs:t.nodeSelectorPairs}}),{setModalErrorSnackMessage:y.zb,updateAddField:j.HM,isPageValid:j.NO,setKeyValuePairs:j.i$}),Y=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)({overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},affinityConfigField:{display:"flex"},affinityFieldLabel:{display:"flex",flexFlow:"column",flex:1},radioField:{display:"flex",alignItems:"flex-start",marginTop:10,"& div:first-child":{display:"flex",flexFlow:"column",alignItems:"baseline",textAlign:"left !important"}},affinityLabelKey:{"& div:first-child":{marginBottom:0}},affinityLabelValue:{marginLeft:10,"& div:first-child":{marginBottom:0}},rowActions:{display:"flex",alignItems:"center"},fieldContainer:{marginBottom:0},affinityRow:{marginBottom:10,display:"flex"}},f.oO),f.AK))}))(H((function(e){var t=e.classes,n=e.podAffinity,a=e.nodeSelectorLabels,r=e.withPodAntiAffinity,s=e.setModalErrorSnackMessage,l=e.updateAddField,c=e.keyValuePairs,u=e.setKeyValuePairs,m=e.isPageValid,p=(0,o.useState)({}),g=(0,i.Z)(p,2),f=g[0],x=g[1],v=(0,o.useState)(!0),y=(0,i.Z)(v,2),C=y[0],S=y[1],j=(0,o.useState)({}),_=(0,i.Z)(j,2),k=_[0],R=_[1],z=(0,o.useState)([]),F=(0,i.Z)(z,2),D=F[0],E=F[1],K=(0,o.useCallback)((function(e,t){l("affinity",e,t)}),[l]);return(0,o.useEffect)((function(){C&&h.Z.invoke("GET","/api/v1/nodes/labels").then((function(e){S(!1),R(e);var t=[];for(var n in e)t.push({label:n,value:n});E(t)})).catch((function(e){S(!1),s(e),R({})}))}),[s,C]),(0,o.useEffect)((function(){if(c){var e=c.filter((function(e){return""!==e.key})).map((function(e){return"".concat(e.key,"=").concat(e.value)})).filter((function(e,t,n){return n.indexOf(e)===t})).join("&");K("nodeSelectorLabels",e)}}),[c,K]),(0,o.useEffect)((function(){var e=[];if("nodeSelector"===n){var t=!0,r=a.split("&");1===r.length&&""===r[0]&&(t=!1),r.forEach((function(e,n){var a=e.split("=");2!==a.length&&(t=!1),n+1!==r.length&&(""!==a[0]&&""!==a[1]||(t=!1))})),e=[].concat((0,Z.Z)(e),[{fieldKey:"labels",required:!0,value:a,customValidation:!t,customValidationMessage:"You need to add at least one label key-pair"}])}var i=(0,P.R)(e);m("affinity",0===Object.keys(i).length),x(i)}),[m,n,a]),(0,T.jsxs)(b.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Pod Placement"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Configure how pods will be assigned to nodes"})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.affinityConfigField,children:(0,T.jsxs)(d.ZP,{item:!0,className:t.affinityFieldLabel,children:[(0,T.jsx)("div",{className:t.label,children:"Type"}),(0,T.jsx)("div",{className:"".concat(t.descriptionText," ").concat(t.affinityHelpText),children:"MinIO supports multiple configurations for Pod Affinity"}),(0,T.jsx)(d.ZP,{item:!0,className:t.radioField,children:(0,T.jsx)(U.Z,{currentSelection:n,id:"affinity-options",name:"affinity-options",label:" ",onChange:function(e){K("podAffinity",e.target.value)},selectorOptions:[{label:"None",value:"none"},{label:"Default (Pod Anti-Affinnity)",value:"default"},{label:"Node Selector",value:"nodeSelector"}]})})]})}),"nodeSelector"===n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(N.Z,{value:"with_pod_anti_affinity",id:"with_pod_anti_affinity",name:"with_pod_anti_affinity",checked:r,onChange:function(e){var t=e.target.checked;K("withPodAntiAffinity",t)},label:"With Pod Anti-Affinity"})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)("h3",{children:"Labels"}),(0,T.jsx)("span",{className:t.error,children:f.labels}),(0,T.jsx)(d.ZP,{container:!0,children:c&&c.map((function(e,n){return(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.affinityRow,children:[(0,T.jsxs)(d.ZP,{item:!0,xs:5,className:t.affinityLabelKey,children:[D.length>0&&(0,T.jsx)(A.Z,{onChange:function(e){var t=e.target.value,a=Object.assign([],c);a[n].key=e.target.value,a[n].value=k[t][0],u(a)},id:"select-access-policy",name:"select-access-policy",label:"",value:e.key,options:D}),0===D.length&&(0,T.jsx)(I.Z,{id:"nodeselector-key-".concat(n.toString()),label:"",name:"nodeselector-".concat(n.toString()),value:e.key,onChange:function(e){var t=Object.assign([],c);t[n].key=e.target.value,u(t)},index:n,placeholder:"Key"})]}),(0,T.jsxs)(d.ZP,{item:!0,xs:5,className:t.affinityLabelValue,children:[D.length>0&&(0,T.jsx)(A.Z,{onChange:function(e){var t=Object.assign([],c);t[n].value=e.target.value,u(t)},id:"select-access-policy",name:"select-access-policy",label:"",value:e.value,options:k[e.key]?k[e.key].map((function(e){return{label:e,value:e}})):[]}),0===D.length&&(0,T.jsx)(I.Z,{id:"nodeselector-value-".concat(n.toString()),label:"",name:"nodeselector-".concat(n.toString()),value:e.value,onChange:function(e){var t=Object.assign([],c);t[n].value=e.target.value,u(t)},index:n,placeholder:"value"})]}),(0,T.jsxs)(d.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(w.Z,{size:"small",onClick:function(){var e=Object.assign([],c);D.length>0?e.push({key:D[0].value,value:k[D[0].value][0]}):e.push({key:"",value:""}),u(e)},children:(0,T.jsx)(V.Z,{})})}),c.length>1&&(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(w.Z,{size:"small",onClick:function(){var e=c.filter((function(e,t){return t!==n}));u(e)},children:(0,T.jsx)(L.Z,{})})})]})]},"affinity-keyVal-".concat(n.toString()))}))})]})]})]})}))),Q=n(35721),X=n(24442),J=(0,u.$j)((function(e){return{storageClasses:e.tenants.createTenant.storageClasses,customImage:e.tenants.createTenant.fields.configure.customImage,imageName:e.tenants.createTenant.fields.configure.imageName,customDockerhub:e.tenants.createTenant.fields.configure.customDockerhub,imageRegistry:e.tenants.createTenant.fields.configure.imageRegistry,imageRegistryUsername:e.tenants.createTenant.fields.configure.imageRegistryUsername,imageRegistryPassword:e.tenants.createTenant.fields.configure.imageRegistryPassword,exposeMinIO:e.tenants.createTenant.fields.configure.exposeMinIO,exposeConsole:e.tenants.createTenant.fields.configure.exposeConsole,prometheusCustom:e.tenants.createTenant.fields.configure.prometheusCustom,tenantCustom:e.tenants.createTenant.fields.configure.tenantCustom,logSearchCustom:e.tenants.createTenant.fields.configure.logSearchCustom,logSearchVolumeSize:e.tenants.createTenant.fields.configure.logSearchVolumeSize,logSearchSizeFactor:e.tenants.createTenant.fields.configure.logSearchSizeFactor,prometheusVolumeSize:e.tenants.createTenant.fields.configure.prometheusVolumeSize,prometheusSizeFactor:e.tenants.createTenant.fields.configure.prometheusSizeFactor,logSearchSelectedStorageClass:e.tenants.createTenant.fields.configure.logSearchSelectedStorageClass,logSearchImage:e.tenants.createTenant.fields.configure.logSearchImage,kesImage:e.tenants.createTenant.fields.configure.kesImage,logSearchPostgresImage:e.tenants.createTenant.fields.configure.logSearchPostgresImage,logSearchPostgresInitImage:e.tenants.createTenant.fields.configure.logSearchPostgresInitImage,prometheusSelectedStorageClass:e.tenants.createTenant.fields.configure.prometheusSelectedStorageClass,prometheusImage:e.tenants.createTenant.fields.configure.prometheusImage,prometheusSidecarImage:e.tenants.createTenant.fields.configure.prometheusSidecarImage,prometheusInitImage:e.tenants.createTenant.fields.configure.prometheusInitImage,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{updateAddField:j.HM,isPageValid:j.NO}),ee=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)({},f.DF),f.oO),f.AK))}))(J((function(e){var t=e.classes,n=(e.storageClasses,e.customImage),a=e.imageName,r=e.customDockerhub,s=e.imageRegistry,l=e.imageRegistryUsername,c=e.imageRegistryPassword,u=(e.exposeMinIO,e.exposeConsole,e.prometheusCustom),m=e.tenantCustom,p=e.logSearchCustom,g=e.logSearchVolumeSize,f=(e.logSearchSizeFactor,e.logSearchImage),h=e.kesImage,x=e.logSearchPostgresImage,v=e.logSearchPostgresInitImage,y=e.prometheusVolumeSize,C=(e.prometheusSizeFactor,e.logSearchSelectedStorageClass),S=e.prometheusSelectedStorageClass,j=e.prometheusImage,A=e.prometheusSidecarImage,k=e.prometheusInitImage,R=e.updateAddField,z=e.isPageValid,w=(e.selectedStorageClass,(0,o.useState)({})),F=(0,i.Z)(w,2),D=F[0],E=F[1],U=(0,o.useCallback)((function(e,t){R("configure",e,t)}),[R]);(0,o.useEffect)((function(){var e=[];u&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"prometheus_storage_class",required:!0,value:S,customValidation:""===S,customValidationMessage:"Field cannot be empty"},{fieldKey:"prometheus_volume_size",required:!0,value:y,customValidation:""===y||parseInt(y)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"}])),p&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"log_search_storage_class",required:!0,value:C,customValidation:""===C,customValidationMessage:"Field cannot be empty"},{fieldKey:"log_search_volume_size",required:!0,value:g,customValidation:""===g||parseInt(g)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"}])),n&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"image",required:!1,value:a,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/minio:VERSION'"},{fieldKey:"logSearchImage",required:!1,value:f,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/logsearchapi:VERSION'"},{fieldKey:"kesImage",required:!1,value:h,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/kes:VERSION'"},{fieldKey:"logSearchPostgresImage",required:!1,value:x,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/postgres:VERSION'"},{fieldKey:"logSearchPostgresInitImage",required:!1,value:v,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"},{fieldKey:"prometheusImage",required:!1,value:j,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/prometheus:VERSION'"},{fieldKey:"prometheusSidecarImage",required:!1,value:A,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'project/container:VERSION'"},{fieldKey:"prometheusInitImage",required:!1,value:k,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"}]),r&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"registry",required:!0,value:s},{fieldKey:"registryUsername",required:!0,value:l},{fieldKey:"registryPassword",required:!0,value:c}])));var t=(0,P.R)(e);z("configure",0===Object.keys(t).length),E(t)}),[n,a,f,h,x,v,j,A,k,r,s,l,c,z,u,m,p,S,y,C,g]);var K=function(e){E((0,_.h)(D,e))};return(0,T.jsxs)(b.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Container Images"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Images used by the Tenant Deployment"})]}),(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"image",name:"image",onChange:function(e){U("imageName",e.target.value),K("image")},label:"MinIO's Image",value:a,error:D.image||"",placeholder:"E.g. minio/minio:RELEASE.2022-01-08T03-11-54Z"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"logSearchImage",name:"logSearchImage",onChange:function(e){U("logSearchImage",e.target.value),K("logSearchImage")},label:"Log Search API's Image",value:f,error:D.logSearchImage||"",placeholder:"E.g. minio/logsearchapi:v4.1.1"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"kesImage",name:"kesImage",onChange:function(e){U("kesImage",e.target.value),K("kesImage")},label:"KES Image",value:h,error:D.kesImage||"",placeholder:"E.g. minio/kes:v0.14.0"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"logSearchPostgresImage",name:"logSearchPostgresImage",onChange:function(e){U("logSearchPostgresImage",e.target.value),K("logSearchPostgresImage")},label:"Log Search Postgres's Image",value:x,error:D.logSearchPostgresImage||"",placeholder:"E.g. library/postgres:13"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"logSearchPostgresInitImage",name:"logSearchPostgresInitImage",onChange:function(e){U("logSearchPostgresInitImage",e.target.value),K("logSearchPostgresInitImage")},label:"Log Search Postgres's Init Image",value:v,error:D.logSearchPostgresInitImage||"",placeholder:"E.g. library/busybox:1.33.1"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"prometheusImage",name:"prometheusImage",onChange:function(e){U("prometheusImage",e.target.value),K("prometheusImage")},label:"Prometheus Image",value:j,error:D.prometheusImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"prometheusSidecarImage",name:"prometheusSidecarImage",onChange:function(e){U("prometheusSidecarImage",e.target.value),K("prometheusSidecarImage")},label:"Prometheus Sidecar Image",value:A,error:D.prometheusSidecarImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"prometheusInitImage",name:"prometheusInitImage",onChange:function(e){U("prometheusInitImage",e.target.value),K("prometheusInitImage")},label:"Prometheus Init Image",value:k,error:D.prometheusInitImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})})]}),n&&(0,T.jsx)(o.Fragment,{children:(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(N.Z,{value:"custom_docker_hub",id:"custom_docker_hub",name:"custom_docker_hub",checked:r,onChange:function(e){var t=e.target.checked;U("customDockerhub",t)},label:"Set/Update Image Registry"})})}),r&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"registry",name:"registry",onChange:function(e){U("imageRegistry",e.target.value)},label:"Endpoint",value:s,error:D.registry||"",placeholder:"E.g. https://index.docker.io/v1/",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"registryUsername",name:"registryUsername",onChange:function(e){U("imageRegistryUsername",e.target.value)},label:"Username",value:l,error:D.registryUsername||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"registryPassword",name:"registryPassword",onChange:function(e){U("imageRegistryPassword",e.target.value)},label:"Password",value:c,error:D.registryPassword||"",required:!0})})]})]})}))),te=n(25534),ne=n(29316),ae=n(3143),re=n.n(ae),ie=n(32120),se=n(23473),oe=n(60656),le=n(98280),ce={setErrorSnackMessage:y.Ih},ue=(0,u.$j)(null,ce),de=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)({wrapText:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"}},f.oO),f.Qw))}))(ue((function(e){var t=e.classes,n=e.namespace,a=e.addNamespaceOpen,r=e.closeAddNamespaceModalAndRefresh,s=e.setErrorSnackMessage,l=(0,o.useState)(!1),c=(0,i.Z)(l,2),u=c[0],d=c[1];(0,o.useEffect)((function(){u&&h.Z.invoke("POST","/api/v1/namespace",{name:n}).then((function(e){d(!1),r(!0)})).catch((function(e){d(!1),s(e)}))}),[u,r,n,s]);return(0,T.jsx)(oe.Z,{title:"New namespace",confirmText:"Create",confirmButtonProps:{color:"primary",variant:"contained"},isOpen:a,titleIcon:(0,T.jsx)(le.Ej,{}),isLoading:u,onConfirm:function(){d(!0)},onClose:function(){r(!1)},confirmationContent:(0,T.jsxs)(o.Fragment,{children:[u&&(0,T.jsx)(m.Z,{}),(0,T.jsxs)(se.Z,{children:["Are you sure you want to add a namespace called",(0,T.jsx)("br",{}),(0,T.jsx)("b",{className:t.wrapText,children:n}),"?"]})]})})}))),me=n(4182),pe=n(35044),ge=n(73481),fe=n(29399),he=n(95995),xe=(0,u.$j)((function(e){return{volumeSize:e.tenants.createTenant.fields.tenantSize.volumeSize,sizeFactor:e.tenants.createTenant.fields.tenantSize.sizeFactor,drivesPerServer:e.tenants.createTenant.fields.tenantSize.drivesPerServer,nodes:e.tenants.createTenant.fields.tenantSize.nodes,memoryNode:e.tenants.createTenant.fields.tenantSize.memoryNode,ecParity:e.tenants.createTenant.fields.tenantSize.ecParity,ecParityChoices:e.tenants.createTenant.fields.tenantSize.ecParityChoices,cleanECChoices:e.tenants.createTenant.fields.tenantSize.cleanECChoices,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,distribution:e.tenants.createTenant.fields.tenantSize.distribution,ecParityCalc:e.tenants.createTenant.fields.tenantSize.ecParityCalc,limitSize:e.tenants.createTenant.fields.tenantSize.limitSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,cpuToUse:e.tenants.createTenant.fields.tenantSize.cpuToUse,integrationSelection:e.tenants.createTenant.fields.tenantSize.integrationSelection}}),{updateAddField:j.HM,isPageValid:j.NO}),ve=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)({root:{margin:4},table:{"& .MuiTableCell-root":{fontSize:13}}},f.oO),f.AK))}))(xe((function(e){var t=e.classes,n=(e.updateAddField,e.isPageValid,e.volumeSize,e.sizeFactor,e.drivesPerServer,e.nodes),a=e.memoryNode,r=e.ecParity,i=(e.ecParityChoices,e.cleanECChoices,e.resourcesSize,e.distribution),s=e.ecParityCalc,l=(e.limitSize,e.selectedStorageClass,e.cpuToUse),c=e.integrationSelection,u=s.storageFactors.find((function(e){return e.erasureCode===r}));return(0,T.jsxs)("div",{className:t.root,children:[(0,T.jsx)("h4",{children:"Resource Allocation"}),(0,T.jsx)(he.Z,{}),(0,T.jsx)(me.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(pe.Z,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Number of Servers"}),(0,T.jsx)(ge.Z,{align:"right",children:parseInt(n)>0?n:"-"})]}),""===c.typeSelection&&""===c.storageClass&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Drives per Server"}),(0,T.jsx)(ge.Z,{align:"right",children:i?i.disks:"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Drive Capacity"}),(0,T.jsx)(ge.Z,{align:"right",children:i?(0,x.ae)(i.pvSize):"-"})]})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Total Volumes"}),(0,T.jsx)(ge.Z,{align:"right",children:i?i.persistentVolumes:"-"})]}),""===c.typeSelection&&""===c.storageClass&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Memory per Node"}),(0,T.jsxs)(ge.Z,{align:"right",children:[a," Gi"]})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{style:{borderBottom:0},scope:"row",children:"CPU Selection"}),(0,T.jsx)(ge.Z,{style:{borderBottom:0},align:"right",children:l})]})]})]})}),0===s.error&&u&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("h4",{children:"Erasure Code Configuration"}),(0,T.jsx)(he.Z,{}),(0,T.jsx)(me.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(pe.Z,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"EC Parity"}),(0,T.jsx)(ge.Z,{align:"right",children:""!==r?r:"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Raw Capacity"}),(0,T.jsx)(ge.Z,{align:"right",children:(0,x.ae)(s.rawCapacity)})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Usable Capacity"}),(0,T.jsx)(ge.Z,{align:"right",children:(0,x.ae)(u.maxCapacity)})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{style:{borderBottom:0},scope:"row",children:"Server Failures Tolerated"}),(0,T.jsx)(ge.Z,{style:{borderBottom:0},align:"right",children:i?Math.floor(u.maxFailureTolerations/i.disks):"-"})]})]})})]}),""!==c.typeSelection&&""!==c.storageClass&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("h4",{children:"Single Instance Configuration"}),(0,T.jsx)(he.Z,{}),(0,T.jsx)(me.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(pe.Z,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"CPU"}),(0,T.jsx)(ge.Z,{align:"right",children:0!==c.CPU?c.CPU:"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Memory"}),(0,T.jsx)(ge.Z,{align:"right",children:0!==c.memory?"".concat(c.memory," Gi"):"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{scope:"row",children:"Drives per Server"}),(0,T.jsx)(ge.Z,{align:"right",children:0!==c.drivesPerServer?"".concat(c.drivesPerServer):"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(ge.Z,{style:{borderBottom:0},scope:"row",children:"Drive Size"}),(0,T.jsxs)(ge.Z,{style:{borderBottom:0},align:"right",children:[c.driveSize.driveSize,c.driveSize.sizeUnit]})]})]})})]})]})}))),ye=n(7262),Ce=(0,u.$j)((function(e){return{nodes:e.tenants.createTenant.fields.tenantSize.nodes,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,maxAllocatableResources:e.tenants.createTenant.fields.tenantSize.maxAllocatableResources,maxCPUsUse:e.tenants.createTenant.fields.tenantSize.maxCPUsUse,maxMemorySize:e.tenants.createTenant.fields.tenantSize.maxMemorySize,resourcesSpecifyLimit:e.tenants.createTenant.fields.tenantSize.resourcesSpecifyLimit,resourcesCPURequestError:e.tenants.createTenant.fields.tenantSize.resourcesCPURequestError,resourcesCPURequest:e.tenants.createTenant.fields.tenantSize.resourcesCPURequest,resourcesCPULimitError:e.tenants.createTenant.fields.tenantSize.resourcesCPULimitError,resourcesCPULimit:e.tenants.createTenant.fields.tenantSize.resourcesCPULimit,resourcesMemoryRequestError:e.tenants.createTenant.fields.tenantSize.resourcesMemoryRequestError,resourcesMemoryRequest:e.tenants.createTenant.fields.tenantSize.resourcesMemoryRequest,resourcesMemoryLimitError:e.tenants.createTenant.fields.tenantSize.resourcesMemoryLimitError,resourcesMemoryLimit:e.tenants.createTenant.fields.tenantSize.resourcesMemoryLimit}}),{updateAddField:j.HM,isPageValid:j.NO}),Se=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(Ce((function(e){var t=e.classes,n=e.updateAddField,a=e.isPageValid,r=e.nodes,i=e.resourcesSize,s=e.selectedStorageClass,l=(e.maxAllocatableResources,e.maxCPUsUse),u=e.maxMemorySize,m=e.resourcesSpecifyLimit,p=e.resourcesCPURequestError,g=e.resourcesCPURequest,f=e.resourcesCPULimitError,x=e.resourcesCPULimit,v=e.resourcesMemoryRequestError,y=e.resourcesMemoryRequest,C=e.resourcesMemoryLimitError,S=e.resourcesMemoryLimit,j=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]);return(0,o.useEffect)((function(){a("tenantSize",""===v&&""===C&&""===p&&""===f)}),[a,v,C,p,f]),(0,o.useEffect)((function(){h.Z.invoke("GET","api/v1/cluster/allocatable-resources?num_nodes=".concat(r)).then((function(e){j("maxAllocatableResources",e);var t=e,n=c()(t,"min_allocatable_mem",!1),a=c()(t,"min_allocatable_cpu",!1);if(!1===n||!1===a)return j("cpuToUse",0),j("maxMemorySize",""),void j("maxCPUsUse","");var r=(0,ye.floor)(e.mem_priority.max_allocatable_mem/1024/1024/1024);j("maxMemorySize",r.toString()),j("maxCPUsUse",e.cpu_priority.max_allocatable_cpu.toString());var i=c()(t,"cpu_priority.max_allocatable_cpu",0),s=Math.max(1,(0,ye.floor)(i/2));j("resourcesCPURequest",s);var o=Math.max(2,(0,ye.floor)(r/2));j("resourcesMemoryRequest",o)})).catch((function(e){j("maxMemorySize",0),j("resourcesCPURequest",""),console.error(e)}))}),[r,j]),(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Resources"}),(0,T.jsx)("span",{className:t.descriptionText,children:"You may specify the amount of CPU and Memory that MinIO servers should reserve on each node."})]})}),""!==i.error&&(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.error,children:i.error})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{label:"CPU Request",id:"resourcesCPURequest",name:"resourcesCPURequest",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesCPURequestError",""):isNaN(t)?j("resourcesCPURequestError","Invalid number"):t>parseInt(l)?j("resourcesCPURequestError","Request exceeds available cores (".concat(l,")")):e.target.validity.valid?j("resourcesCPURequestError",""):j("resourcesCPURequestError","Invalid configuration"),j("resourcesCPURequest",e.target.value)},value:g,disabled:""===s,max:l,error:p,pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"resourcesMemoryRequest",name:"resourcesMemoryRequest",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesMemoryRequestError",""):isNaN(t)?j("resourcesMemoryRequestError","Invalid number"):t>parseInt(u)?j("resourcesMemoryRequestError","Request exceeds available memory across ".concat(r," nodes (").concat(u,"Gi)")):t<2?j("resourcesMemoryRequestError","At least 2Gi must be requested"):e.target.validity.valid?j("resourcesMemoryRequestError",""):j("resourcesMemoryRequestError","Invalid configuration"),j("resourcesMemoryRequest",e.target.value)},label:"Memory Request [Gi]",value:y,disabled:""===s,error:v,pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(N.Z,{value:"resourcesSpecifyLimit",id:"resourcesSpecifyLimit",name:"resourcesSpecifyLimit",checked:m,onChange:function(e){var t=e.target.checked;j("resourcesSpecifyLimit",t)},label:"Specify Limit"})}),m&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{label:"CPU Limit",id:"resourcesCPULimit",name:"resourcesCPULimit",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesCPULimitError",""):isNaN(t)?j("resourcesCPULimitError","Invalid number"):e.target.validity.valid?j("resourcesCPULimitError",""):j("resourcesCPULimitError","Invalid configuration"),j("resourcesCPULimit",e.target.value)},value:x,disabled:""===s,max:l,error:f,pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"resourcesMemoryLimit",name:"resourcesMemoryLimit",onChange:function(e){var t=parseInt(e.target.value);console.log("value",t),""===e.target.value?j("resourcesMemoryLimitError",""):isNaN(t)?j("resourcesMemoryLimitError","Invalid number"):e.target.validity.valid?j("resourcesMemoryLimitError",""):j("resourcesMemoryLimitError","Invalid configuration"),j("resourcesMemoryLimit",e.target.value)},label:"Memory Limit [Gi]",value:S,disabled:""===s,error:C,pattern:"[0-9]*"})})]})]})}))),je=(0,u.$j)((function(e){return{volumeSize:e.tenants.createTenant.fields.tenantSize.volumeSize,sizeFactor:e.tenants.createTenant.fields.tenantSize.sizeFactor,drivesPerServer:e.tenants.createTenant.fields.tenantSize.drivesPerServer,nodes:e.tenants.createTenant.fields.tenantSize.nodes,memoryNode:e.tenants.createTenant.fields.tenantSize.memoryNode,ecParity:e.tenants.createTenant.fields.tenantSize.ecParity,ecParityChoices:e.tenants.createTenant.fields.tenantSize.ecParityChoices,cleanECChoices:e.tenants.createTenant.fields.tenantSize.cleanECChoices,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,distribution:e.tenants.createTenant.fields.tenantSize.distribution,ecParityCalc:e.tenants.createTenant.fields.tenantSize.ecParityCalc,limitSize:e.tenants.createTenant.limitSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{updateAddField:j.HM,isPageValid:j.NO}),Ze=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(je((function(e){var t=e.classes,n=e.updateAddField,a=e.isPageValid,r=e.volumeSize,s=e.sizeFactor,l=e.drivesPerServer,c=e.nodes,u=e.memoryNode,m=e.ecParity,p=e.ecParityChoices,g=e.cleanECChoices,f=e.resourcesSize,v=e.distribution,y=e.ecParityCalc,C=e.limitSize,S=e.selectedStorageClass,j=(0,o.useState)({}),Z=(0,i.Z)(j,2),b=Z[0],N=Z[1],k=(0,o.useState)(!1),R=(0,i.Z)(k,2),z=R[0],w=R[1],F=(0,o.useState)(""),D=(0,i.Z)(F,2),E=D[0],U=D[1],K=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]),L=function(e){N((0,_.h)(b,e))};return(0,o.useEffect)((function(){if(p.length>0&&""===v.error){var e=(0,x.ES)(g,v.persistentVolumes,v.pvSize,v.nodes);K("ecParityCalc",e),g.includes(m)&&""!==m||K("ecParity",e.defaultEC)}}),[m,p.length,v,g,K]),(0,o.useEffect)((function(){var e=r,t=s,n=(0,x.Pw)("12","Ti",!0),a={unit:t,value:e.toString()},i=(0,x.zg)(a,parseInt(c),parseInt(n),parseInt(l));K("distribution",i),w(!1),U("")}),[c,r,s,K,l]),(0,o.useEffect)((function(){var e=(0,x.Pw)(r,s,!0),t=(0,P.R)([{fieldKey:"nodes",required:!0,value:c,customValidation:z,customValidationMessage:E},{fieldKey:"volume_size",required:!0,value:r,customValidation:parseInt(e)<1073741824||parseInt(e)>C[S],customValidationMessage:"Volume size must be greater than 1Gi and less than ".concat((0,x.ae)(C[S],!0))},{fieldKey:"drivesps",required:!0,value:l,customValidation:parseInt(l)<1,customValidationMessage:"There must be at least one drive"}]);a("tenantSize",!("nodes"in t)&&!("volume_size"in t)&&!("drivesps"in t)&&""===v.error&&0===y.error&&""!==m),N(t)}),[c,r,s,u,v,y,f,C,S,a,z,E,l,m]),(0,o.useEffect)((function(){""===v.error&&""!==c.trim()&&0!==v.disks&&h.Z.invoke("GET","api/v1/get-parity/".concat(c,"/").concat(v.disks)).then((function(e){K("ecParityChoices",(0,ie.dv)(e)),K("cleanECChoices",e)})).catch((function(e){K("ecparityChoices",[]),a("tenantSize",!1),K("ecParity","")}))}),[v,a,K,c]),(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Capacity"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Please select the desired capacity"})]})}),""!==v.error&&(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.error,children:v.error})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"nodes",name:"nodes",onChange:function(e){e.target.validity.valid&&(K("nodes",e.target.value),L("nodes"))},label:"Number of Servers",disabled:""===S,value:c,min:"4",required:!0,error:b.nodes||"",pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"drivesps",name:"drivesps",onChange:function(e){e.target.validity.valid&&(K("drivesPerServer",e.target.value),L("drivesps"))},label:"Drives per Server",value:l,disabled:""===S,min:"1",required:!0,error:b.drivesps||"",pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)("div",{className:t.formFieldRow,children:(0,T.jsxs)("div",{className:t.compositeFieldContainer,children:[(0,T.jsx)(I.Z,{type:"number",id:"volume_size",name:"volume_size",onChange:function(e){K("volumeSize",e.target.value),L("volume_size")},label:"Total Size",value:r,disabled:""===S,required:!0,error:b.volume_size||"",min:"0"}),(0,T.jsx)("div",{className:t.compositeAddOn,children:(0,T.jsx)(A.Z,{label:"",id:"size_factor",name:"size_factor",value:s,disabled:""===S,onChange:function(e){K("sizeFactor",e.target.value)},options:(0,x.QU)()})})]})})})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:[(0,T.jsx)(A.Z,{id:"ec_parity",name:"ec_parity",onChange:function(e){K("ecParity",e.target.value)},label:"Erasure Code Parity",disabled:""===S,value:m,options:p}),(0,T.jsx)("span",{className:t.descriptionText,children:"Please select the desired parity. This setting will change the max usable capacity in the cluster"})]}),(0,T.jsx)(Se,{})]})}))),be=n(36222),_e=(0,u.$j)((function(e){return function(){var t=e.tenants.createTenant,n=t.fields.tenantSize,a=n.memoryNode,r=n.ecParityChoices,i=n.distribution,s=n.cleanECChoices,o=n.sizeFactor,l=n.ecParity,c=n.cpuToUse,u=n.integrationSelection,d=n.resourcesSize,m=n.drivesPerServer,p=n.maxCPUsUse,g=n.ecParityCalc;return{volumeSize:n.volumeSize,sizeFactor:o,drivesPerServer:m,nodes:n.nodes,memoryNode:a,ecParity:l,ecParityChoices:r,cleanECChoices:s,resourcesSize:d,distribution:i,ecParityCalc:g,cpuToUse:c,maxCPUsUse:p,integrationSelection:u,limitSize:t.limitSize,selectedStorageType:t.fields.nameTenant.selectedStorageType}}}),{updateAddField:j.HM,isPageValid:j.NO}),Pe=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(_e((function(e){var t=e.classes,n=e.updateAddField,a=e.isPageValid,r=e.volumeSize,s=e.sizeFactor,l=e.drivesPerServer,u=e.nodes,m=e.memoryNode,p=e.ecParity,g=e.ecParityChoices,f=e.cleanECChoices,v=e.resourcesSize,y=e.distribution,C=e.ecParityCalc,S=e.limitSize,j=e.cpuToUse,Z=e.selectedStorageType,b=e.maxCPUsUse,N=e.formToRender,k=e.integrationSelection,R=(0,o.useState)({}),z=(0,i.Z)(R,2),w=z[0],F=z[1],D=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]),E=(0,o.useCallback)((function(e,t){n("nameTenant",e,t)}),[n]);return(0,o.useEffect)((function(){if(g.length>0&&""===y.error){var e=(0,x.ES)(f,y.persistentVolumes,y.pvSize,y.nodes);D("ecParityCalc",e),f.includes(p)&&""!==p||D("ecParity",e.defaultEC)}}),[p,g,y,f,D]),(0,o.useEffect)((function(){if(void 0!==N&&parseInt(u)>=4){var e=Ie[N];if(Object.keys(e).length>0){var t=c()(e,"configurations",[]).find((function(e){return e.typeSelection===Z}));if(t){D("integrationSelection",t),E("selectedStorageClass",t.storageClass);var n={pvSize:parseInt((0,x.Pw)(t.driveSize.driveSize,t.driveSize.sizeUnit,!0),10),nodes:parseInt(u),disks:t.drivesPerServer,persistentVolumes:t.drivesPerServer*parseInt(u),error:""};D("distribution",n),D("resourcesCPURequest",Math.max(1,t.CPU/2)),D("resourcesMemoryRequest",Math.max(2,t.memory/2))}}}}),[u,Z,N,D,E]),(0,o.useEffect)((function(){var e=(0,P.R)([{fieldKey:"nodes",required:!0,value:u,customValidation:parseInt(u)<4,customValidationMessage:"Al least 4 servers must be selected"}]);a("tenantSize",!("nodes"in e)&&""===y.error&&0===C.error&&""===v.error&&""!==p&&parseInt(u)>=4),F(e)}),[u,r,s,m,y,C,v,S,Z,j,b,a,l,p]),(0,o.useEffect)((function(){0!==k.drivesPerServer&&""!==u.trim()&&h.Z.invoke("GET","api/v1/get-parity/".concat(u,"/").concat(k.drivesPerServer)).then((function(e){D("ecParityChoices",(0,ie.dv)(e)),D("cleanECChoices",e)})).catch((function(e){D("ecparityChoices",[]),a("tenantSize",!1),D("ecParity","")}))}),[k,u,a,D]),(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Tenant Size"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Please select the desired capacity"})]})}),""!==y.error&&(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.error,children:y.error})}),""!==v.error&&(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.error,children:v.error})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"nodes",name:"nodes",onChange:function(e){var t;e.target.validity.valid&&(D("nodes",e.target.value),t="nodes",F((0,_.h)(w,t)))},label:"Number of Servers",disabled:""===Z,value:u,min:"4",required:!0,error:w.nodes||"",pattern:"[0-9]*"})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:[(0,T.jsx)(A.Z,{id:"ec_parity",name:"ec_parity",onChange:function(e){D("ecParity",e.target.value)},label:"Erasure Code Parity",disabled:""===Z,value:p,options:g}),(0,T.jsx)("span",{className:t.descriptionText,children:"Please select the desired parity. This setting will change the max usable capacity in the cluster"})]})]})})));!function(e){e[e.aws=0]="aws",e[e.azure=1]="azure",e[e.gcp=2]="gcp",e[e.default=3]="default",e[e[void 0]=4]="undefined"}(r||(r={}));var Ne={"mp-mode-aws":r.aws,"mp-mode-azure":r.azure,"mp-mode-gcp":r.gcp},Ie=(a={},(0,be.Z)(a,r.aws,{variantSelectorLabel:"Storage Type",variantSelectorValues:[{label:"NVME",value:"nvme"},{label:"HDD",value:"hdd"}],configurations:[{typeSelection:"nvme",storageClass:"nvme-i3en-12xlarge",CPU:48,memory:384,driveSize:{driveSize:"7500",sizeUnit:"Gi"},drivesPerServer:4},{typeSelection:"hdd",storageClass:"hdd-d3en-12xlarge",CPU:8,memory:32,driveSize:{driveSize:"12.7",sizeUnit:"Ti"},drivesPerServer:4}],sizingComponent:(0,T.jsx)(Pe,{formToRender:r.aws})}),(0,be.Z)(a,r.azure,{variantSelectorLabel:"VM Size",variantSelectorValues:[{label:"Standard_L32s_v2",value:"Standard_L32s_v2"},{label:"Standard_L48s_v2",value:"Standard_L48s_v2"},{label:"Standard_L64s_v2",value:"Standard_L64s_v2"}],configurations:[{typeSelection:"Standard_L8s_v2",storageClass:"local-nvme",CPU:8,memory:64,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:1},{typeSelection:"Standard_L16s_v2",storageClass:"local-nvme",CPU:16,memory:128,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:2},{typeSelection:"Standard_L32s_v2",storageClass:"local-nvme",CPU:32,memory:256,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:4},{typeSelection:"Standard_L48s_v2",storageClass:"local-nvme",CPU:48,memory:384,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:6},{typeSelection:"Standard_L64s_v2",storageClass:"local-nvme",CPU:64,memory:512,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:8}],sizingComponent:(0,T.jsx)(Pe,{formToRender:r.azure})}),(0,be.Z)(a,r.gcp,{variantSelectorLabel:"Storage Type",variantSelectorValues:[{label:"SSD",value:"ssd"}],configurations:[{typeSelection:"ssd",storageClass:"local-ssd",CPU:32,memory:128,driveSize:{driveSize:"368",sizeUnit:"Gi"},drivesPerServer:24}],sizingComponent:(0,T.jsx)(Pe,{formToRender:r.gcp})}),(0,be.Z)(a,r.default,{}),(0,be.Z)(a,r.undefined,{}),a),Ae=(0,u.$j)((function(e){return{tenantName:e.tenants.createTenant.fields.nameTenant.tenantName,namespace:e.tenants.createTenant.fields.nameTenant.namespace,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,selectedStorageType:e.tenants.createTenant.fields.nameTenant.selectedStorageType,storageClasses:e.tenants.createTenant.storageClasses}}),{setModalErrorSnackMessage:y.zb,updateAddField:j.HM,setStorageClassesList:j.wZ,setLimitSize:j.DH,isPageValid:j.NO}),Te=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)({sizePreview:{position:"fixed",marginLeft:10,background:"#FFFFFF",border:"1px solid #EAEAEA",padding:2}},f.DF),f.oO),f.AK))}))(Ae((function(e){var t=e.classes,n=e.storageClasses,a=e.tenantName,s=e.namespace,l=e.selectedStorageClass,u=e.selectedStorageType,m=e.formToRender,p=void 0===m?r.default:m,g=e.updateAddField,f=e.setStorageClassesList,x=e.setLimitSize,v=e.isPageValid,y=e.setModalErrorSnackMessage,C=(0,o.useState)({}),S=(0,i.Z)(C,2),j=S[0],Z=S[1],N=(0,o.useState)(!0),k=(0,i.Z)(N,2),R=k[0],z=k[1],w=(0,o.useState)(!1),F=(0,i.Z)(w,2),D=F[0],E=F[1],U=(0,o.useState)(!1),K=(0,i.Z)(U,2),L=K[0],M=K[1],q=(0,o.useState)(!1),G=(0,i.Z)(q,2),O=G[0],B=G[1],$=(0,o.useCallback)((function(e,t){g("nameTenant",e,t)}),[g]),W=(0,o.useCallback)((function(){M(!1),h.Z.invoke("GET","/api/v1/namespaces/".concat(s,"/tenants")).then((function(e){var t=c()(e,"tenants",[]);if(t&&t.length>0)return z(!1),void E(!1);z(!0),h.Z.invoke("GET","/api/v1/namespaces/".concat(s,"/resourcequotas/").concat(s,"-storagequota")).then((function(e){var t=c()(e,"elements",[]);x((0,ie.OU)(e));var n=t.map((function(e){var t=c()(e,"name","").split(".storageclass.storage.k8s.io/requests.storage")[0];return{label:t,value:t}}));f(n);var a=n.findIndex((function(e){return e.value===l}));n.length>0&&-1===a?$("selectedStorageClass",n[0].value):0===n.length&&($("selectedStorageClass",""),f([])),E(!1)})).catch((function(e){E(!1),M(!0),$("selectedStorageClass",""),f([]),console.error("Namespace error: ",e)}))})).catch((function(e){y({errorMessage:"Error validating if namespace already has tenants",detailedError:e.detailedError})}))}),[s,x,y,f,$,l]),H=(0,o.useMemo)((function(){return re()(W,500)}),[W]);(0,o.useEffect)((function(){if(""!==s)return H(),E(!0),H.cancel}),[H,s]),(0,o.useEffect)((function(){var e=!1,t="";R||D?n.length<1&&R&&!D&&(e=!0,t="Please enter a valid namespace"):(e=!0,t="You can only create one tenant per namespace");var i=(0,P.R)([{fieldKey:"tenant-name",required:!0,pattern:/^[a-z0-9-]{3,63}$/,customPatternMessage:"Name only can contain lowercase letters, numbers and '-'. Min. Length: 3",value:a},{fieldKey:"namespace",required:!0,value:s,customValidation:e,customValidationMessage:t}]),o=!("tenant-name"in i)&&!("namespace"in i)&&(p===r.default&&n.length>0||p!==r.default&&""!==u);v("nameTenant",o),Z(i)}),[n,s,a,v,R,D,u,p]);var Y=function(e){Z((0,_.h)(j,e))};return(0,T.jsxs)(o.Fragment,{children:[O&&(0,T.jsx)(de,{addNamespaceOpen:O,closeAddNamespaceModalAndRefresh:function(e){B(!1),e&&H()},namespace:s}),(0,T.jsxs)(d.ZP,{container:!0,children:[(0,T.jsx)(d.ZP,{item:!0,xs:8,md:9,children:(0,T.jsx)(b.Z,{className:t.paperWrapper,sx:{minHeight:550},children:(0,T.jsxs)(d.ZP,{container:!0,children:[(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Name"}),(0,T.jsx)("span",{className:t.descriptionText,children:"How would you like to name this new tenant?"})]}),(0,T.jsx)("div",{className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"tenant-name",name:"tenant-name",onChange:function(e){$("tenantName",e.target.value),Y("tenant-name")},label:"Name",value:a,required:!0,error:j["tenant-name"]||""})})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"namespace",name:"namespace",onChange:function(e){$("namespace",e.target.value),Y("namespace")},label:"Namespace",value:s,error:j.namespace||"",overlayIcon:L?(0,T.jsx)(V.Z,{}):null,overlayAction:function(){B(!0)},required:!0})}),p===r.default?(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(A.Z,{id:"storage_class",name:"storage_class",onChange:function(e){$("selectedStorageClass",e.target.value)},label:"Storage Class",value:l,options:n,disabled:n.length<1})}):(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(A.Z,{id:"storage_type",name:"storage_type",onChange:function(e){$("selectedStorageType",e.target.value)},label:c()(Ie,"".concat(p,".variantSelectorLabel"),"Storage Type"),value:u,options:c()(Ie,"".concat(p,".variantSelectorValues"),[])})}),p===r.default?(0,T.jsx)(Ze,{}):c()(Ie,"".concat(p,".sizingComponent"),null)]})})}),(0,T.jsx)(d.ZP,{item:!0,xs:4,md:3,children:(0,T.jsx)("div",{className:t.sizePreview,children:(0,T.jsx)(ve,{})})})]})]})}))),ke=(0,u.$j)((function(e){return{features:e.console.session.features}}),null)((function(e){var t=e.features,n=(0,o.useState)(null),a=(0,i.Z)(n,2),s=a[0],l=a[1];return(0,o.useEffect)((function(){var e=r.default;t&&0!==t.length&&Object.keys(Ne).forEach((function(n){t.includes(n)&&(e=c()(Ne,n,r.default))}));l(e)}),[t]),null===s?null:(0,T.jsx)(Te,{formToRender:s})})),Re=(0,u.$j)((function(e){return{namespace:e.tenants.createTenant.fields.nameTenant.namespace,validPages:e.tenants.createTenant.validPages,fields:e.tenants.createTenant.fields,certificates:e.tenants.createTenant.certificates,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{setErrorSnackMessage:y.Ih,updateAddField:j.HM,resetAddTenantForm:j.dS}),ze=(0,g.Z)((function(e){return(0,p.Z)((0,s.Z)((0,s.Z)((0,s.Z)({pageBox:{border:"1px solid #EAEAEA"}},f.oO),f.AK),f.Je))}))(Re((function(e){var t=e.classes,n=e.fields,a=e.certificates,r=e.selectedStorageClass,l=e.namespace,u=e.validPages,p=e.setErrorSnackMessage,g=e.resetAddTenantForm,f=(0,o.useState)(!1),y=(0,i.Z)(f,2),j=y[0],Z=y[1],b=(0,o.useState)(null),_=(0,i.Z)(b,2),P=_[0],N=_[1],I=(0,o.useState)(!1),A=(0,i.Z)(I,2),k=A[0],z=A[1];(0,o.useEffect)((function(){var e=n.nameTenant.tenantName,t=n.nameTenant.selectedStorageClass,r=n.configure.imageName,i=n.configure.customDockerhub,o=n.configure.imageRegistry,u=n.configure.imageRegistryUsername,d=n.configure.imageRegistryPassword,m=n.configure.exposeMinIO,g=n.configure.exposeConsole,f=n.identityProvider.idpSelection,v=n.identityProvider.openIDConfigurationURL,y=n.identityProvider.openIDClientID,S=n.identityProvider.openIDClaimName,j=n.identityProvider.openIDCallbackURL,b=n.identityProvider.openIDScopes,_=n.identityProvider.openIDSecretID,P=n.identityProvider.ADURL,I=n.identityProvider.ADSkipTLS,A=n.identityProvider.ADServerInsecure,T=n.identityProvider.ADUserNameSearchFilter,R=n.identityProvider.ADGroupSearchBaseDN,w=n.identityProvider.ADGroupSearchFilter,F=n.identityProvider.ADGroupNameAttribute,D=n.identityProvider.ADUserDNs,E=n.identityProvider.ADUserNameFormat,U=n.identityProvider.ADLookupBindDN,K=n.identityProvider.ADLookupBindPassword,L=n.identityProvider.ADUserDNSearchBaseDN,M=n.identityProvider.ADUserDNSearchFilter,q=n.identityProvider.ADServerStartTLS,G=n.identityProvider.accessKeys,V=n.identityProvider.secretKeys,O=a.minioCertificates,B=a.caCertificates,$=a.consoleCaCertificates,W=a.consoleCertificate,H=a.serverCertificate,Y=a.clientCertificate,Q=a.vaultCertificate,X=a.vaultCA,J=a.gemaltoCA,ee=n.encryption.enableEncryption,te=n.encryption.encryptionType,ne=n.encryption.gemaltoEndpoint,ae=n.encryption.gemaltoToken,re=n.encryption.gemaltoDomain,ie=n.encryption.gemaltoRetry,se=n.encryption.awsEndpoint,oe=n.encryption.awsRegion,le=n.encryption.awsKMSKey,ce=n.encryption.awsAccessKey,ue=n.encryption.awsSecretKey,de=n.encryption.awsToken,me=n.encryption.vaultEndpoint,pe=n.encryption.vaultEngine,ge=n.encryption.vaultNamespace,fe=n.encryption.vaultPrefix,he=n.encryption.vaultAppRoleEngine,xe=n.encryption.vaultId,ve=n.encryption.vaultSecret,ye=n.encryption.vaultRetry,Ce=n.encryption.vaultPing,Se=n.encryption.azureEndpoint,je=n.encryption.azureTenantID,Ze=n.encryption.azureClientID,be=n.encryption.azureClientSecret,_e=n.encryption.gcpProjectID,Pe=n.encryption.gcpEndpoint,Ne=n.encryption.gcpClientEmail,Ie=n.encryption.gcpClientID,Ae=n.encryption.gcpPrivateKeyID,Te=n.encryption.gcpPrivateKey,ke=n.security.enableAutoCert,Re=n.security.enableTLS,ze=n.tenantSize.ecParity,we=n.tenantSize.distribution,Fe=n.configure.tenantCustom,De=n.configure.logSearchCustom,Ee=n.configure.prometheusCustom,Ue=n.configure.logSearchVolumeSize,Ke=n.configure.logSearchSelectedStorageClass,Le=n.configure.logSearchImage,Me=n.configure.kesImage,qe=n.configure.logSearchPostgresImage,Ge=n.configure.logSearchPostgresInitImage,Ve=n.configure.prometheusImage,Oe=n.configure.prometheusSidecarImage,Be=n.configure.prometheusInitImage,$e=n.configure.prometheusSelectedStorageClass,We=n.configure.prometheusVolumeSize,He=n.affinity.podAffinity,Ye=n.affinity.nodeSelectorLabels,Qe=n.affinity.withPodAntiAffinity,Xe=n.configure.tenantSecurityContext,Je=n.configure.logSearchSecurityContext,et=n.configure.logSearchPostgresSecurityContext,tt=n.configure.prometheusSecurityContext,nt=n.encryption.kesSecurityContext,at=n.encryption.replicas;if(k){var rt=(0,x.en)([]),it={};switch(He){case"default":it={affinity:(0,C.P)(e,rt)};break;case"nodeSelector":it={affinity:(0,C.q)(Ye,Qe,e,rt)}}var st=ze.split(":")[1],ot={name:e,namespace:l,access_key:"",secret_key:"",access_keys:[],secret_keys:[],enable_tls:Re&&ke,enable_console:!0,enable_prometheus:!0,service_name:"",image:r,expose_minio:m,expose_console:g,pools:[(0,s.Z)({name:rt,servers:we.nodes,volumes_per_server:we.disks,volume_configuration:{size:we.pvSize,storage_class_name:t},securityContext:Fe?Xe:null},it)],erasureCodingParity:parseInt(st,10)};""===n.tenantSize.resourcesCPURequest&&""===n.tenantSize.resourcesCPULimit&&""===n.tenantSize.resourcesMemoryRequest&&""===n.tenantSize.resourcesMemoryLimit||(ot.pools[0].resources={},""===n.tenantSize.resourcesCPURequest&&""===n.tenantSize.resourcesMemoryRequest||(ot.pools[0].resources.requests={},""!==n.tenantSize.resourcesCPURequest&&(ot.pools[0].resources.requests.cpu=parseInt(n.tenantSize.resourcesCPURequest)),""!==n.tenantSize.resourcesMemoryRequest&&(ot.pools[0].resources.requests.memory=parseInt(n.tenantSize.resourcesMemoryRequest))),""===n.tenantSize.resourcesCPULimit&&""===n.tenantSize.resourcesMemoryLimit||(ot.pools[0].resources.limits={},""!==n.tenantSize.resourcesCPULimit&&(ot.pools[0].resources.limits.cpu=parseInt(n.tenantSize.resourcesCPULimit)),""!==n.tenantSize.resourcesMemoryLimit&&(ot.pools[0].resources.limits.memory=parseInt(n.tenantSize.resourcesMemoryLimit)))),i&&(ot=(0,s.Z)((0,s.Z)({},ot),{},{image_registry:{registry:o,username:u,password:d}})),ot=De?(0,s.Z)((0,s.Z)({},ot),{},{logSearchConfiguration:{storageClass:"default"===Ke?"":Ke,storageSize:parseInt(Ue),image:Le,postgres_image:qe,postgres_init_image:Ge,securityContext:Je,postgres_securityContext:et}}):(0,s.Z)((0,s.Z)({},ot),{},{logSearchConfiguration:{image:Le,postgres_image:qe,postgres_init_image:Ge}}),ot=Ee?(0,s.Z)((0,s.Z)({},ot),{},{prometheusConfiguration:{storageClass:"default"===$e?"":$e,storageSize:parseInt(We),image:Ve,sidecar_image:Oe,init_image:Be,securityContext:tt}}):(0,s.Z)((0,s.Z)({},ot),{},{prometheusConfiguration:{image:Ve,sidecar_image:Oe,init_image:Be}});var lt=null,ct=null,ut=null,dt=null;if(B.length>0&&(ut={ca_certificates:B.map((function(e){return e.encoded_cert})).filter((function(e){return e}))}),$.length>0&&(dt={console_ca_certificates:$.map((function(e){return e.encoded_cert})).filter((function(e){return e}))}),Re&&O.length>0&&(lt={minio:O.map((function(e){return{crt:e.encoded_cert,key:e.encoded_key}})).filter((function(e){return e.crt&&e.key}))}),Re&&""!==W.encoded_cert&&""!==W.encoded_key&&(ct={console:{crt:W.encoded_cert,key:W.encoded_key}}),(lt||ct||ut||dt)&&(ot=(0,s.Z)((0,s.Z)({},ot),{},{tls:(0,s.Z)((0,s.Z)((0,s.Z)((0,s.Z)({},lt),ct),ut),dt)})),ee){var mt={};switch(te){case"gemalto":var pt={};""!==J.encoded_cert&&(pt={ca:J.encoded_cert}),mt={gemalto:{keysecure:{endpoint:ne,credentials:{token:ae,domain:re,retry:parseInt(ie)},tls:(0,s.Z)({},pt)}}};break;case"aws":mt={aws:{secretsmanager:{endpoint:se,region:oe,kmskey:le,credentials:{accesskey:ce,secretkey:ue,token:de}}}};break;case"azure":mt={azure:{keyvault:{endpoint:Se,credentials:{tenant_id:je,client_id:Ze,client_secret:be}}}};break;case"gcp":mt={gcp:{secretmanager:{project_id:_e,endpoint:Pe,credentials:{client_email:Ne,client_id:Ie,private_key_id:Ae,private_key:Te}}}};break;case"vault":var gt=null,ft=null;""!==Q.encoded_key&&""!==Q.encoded_cert&&(gt={key:Q.encoded_key,crt:Q.encoded_cert}),""!==X.encoded_cert&&(ft={ca:X.encoded_cert});var ht=null;(gt||X)&&(ht={tls:(0,s.Z)((0,s.Z)({},gt),ft)}),mt={vault:(0,s.Z)((0,s.Z)({endpoint:me,engine:pe,namespace:ge,prefix:fe,approle:{engine:he,id:xe,secret:ve,retry:parseInt(ye)}},ht),{},{status:{ping:parseInt(Ce)}})}}var xt={},vt={};""!==Y.encoded_key&&""!==Y.encoded_cert&&(vt={client:{key:Y.encoded_key,crt:Y.encoded_cert}}),""!==H.encoded_key&&""!==H.encoded_cert&&(xt={server:{key:H.encoded_key,crt:H.encoded_cert}}),ot=(0,s.Z)((0,s.Z)({},ot),{},{encryption:(0,s.Z)((0,s.Z)((0,s.Z)({replicas:at,securityContext:nt,image:Me},vt),xt),mt)})}var yt={};switch(f){case"Built-in":for(var Ct=[],St=0;St.\n\nimport React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { BackSettingsIcon } from \"../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n link: {\n display: \"flex\",\n alignItems: \"center\",\n textDecoration: \"none\",\n maxWidth: \"300px\",\n padding: \"2rem 2rem 0rem 2rem\",\n color: theme.palette.primary.light,\n fontSize: \".8rem\",\n \"&:hover\": {\n textDecoration: \"underline\",\n },\n },\n icon: {\n marginRight: \".3rem\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"& svg.min-icon\": {\n width: 12,\n },\n },\n });\n\ninterface IBackLink {\n classes: any;\n to: string;\n label: string;\n className?: any;\n executeOnClick?: () => void;\n}\n\nconst BackLink = ({\n to,\n label,\n classes,\n className,\n executeOnClick,\n}: IBackLink) => {\n return (\n {\n if (executeOnClick) {\n executeOnClick();\n }\n }}\n >\n
\n \n
\n
{label}
\n \n );\n};\n\nexport default withStyles(styles)(BackLink);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IconButton, IconButtonProps, Tooltip } from \"@mui/material\";\nimport clsx from \"clsx\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: 8,\n marginLeft: 8,\n borderWidth: 1,\n borderColor: \"#696969\",\n color: \"#696969\",\n borderStyle: \"solid\",\n borderRadius: 3,\n \"& .min-icon\": {\n // height: 20,\n width: 20,\n },\n \"& .MuiTouchRipple-root span\": {\n backgroundColor: theme.palette.primary.main,\n borderRadius: 3,\n opacity: 0.3,\n },\n \"&:disabled\": {\n color: \"#EBEBEB\",\n borderColor: \"#EBEBEB\",\n },\n },\n contained: {\n borderColor: theme.palette.primary.main,\n background: theme.palette.primary.main,\n color: \"white\",\n \"& .MuiTouchRipple-root span\": {\n backgroundColor: theme.palette.primary.dark,\n borderRadius: 3,\n opacity: 0.3,\n },\n \"&:hover\": {\n backgroundColor: theme.palette.primary.light,\n color: \"#FFF\",\n },\n },\n });\n\ninterface IBoxIconButton extends IconButtonProps {\n classes: any;\n children: any;\n variant?: \"outlined\" | \"contained\";\n tooltip?: string;\n}\n\nconst BoxIconButton = ({\n classes,\n children,\n variant = \"outlined\",\n tooltip,\n ...rest\n}: IBoxIconButton) => {\n const button = (\n \n {children}\n \n );\n\n if (tooltip && tooltip !== \"\") {\n return (\n \n {button}\n \n );\n }\n\n return button;\n};\n\nexport default withStyles(styles)(BoxIconButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { InputAdornment, OutlinedInput } from \"@mui/material\";\nimport BoxIconButton from \"../BoxIconButton/BoxIconButton\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { CopyIcon } from \"../../../../icons\";\nimport { fieldBasic } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n container: {\n display: \"flex\",\n flexFlow: \"column\",\n padding: \"20px 0 8px 0\",\n },\n inputWithCopy: {\n \"& .MuiInputBase-root \": {\n width: \"100%\",\n background: \"#FBFAFA\",\n \"& .MuiInputBase-input\": {\n height: \".8rem\",\n },\n \"& .MuiInputAdornment-positionEnd\": {\n marginRight: \".5rem\",\n \"& .MuiButtonBase-root\": {\n height: \"2rem\",\n },\n },\n },\n \"& .MuiButtonBase-root .min-icon\": {\n width: \".8rem\",\n height: \".8rem\",\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: \".8rem\",\n },\n });\n\nconst CredentialItem = ({\n label = \"\",\n value = \"\",\n classes = {},\n}: {\n label: string;\n value: string;\n classes: any;\n}) => {\n return (\n
\n );\n};\n\nexport default withStyles(styles)(CredentialItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { NewServiceAccount } from \"./types\";\nimport { Button } from \"@mui/material\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport CredentialItem from \"./CredentialItem\";\nimport WarnIcon from \"../../../../icons/WarnIcon\";\nimport { DownloadIcon, ServiceAccountCredentialsIcon } from \"../../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n credentialTitle: {\n padding: \".8rem 0 0 0\",\n fontWeight: 600,\n fontSize: \".9rem\",\n },\n buttonContainer: {\n textAlign: \"right\",\n marginTop: \"1rem\",\n },\n credentialsPanel: {\n overflowY: \"auto\",\n maxHeight: 350,\n },\n promptTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n buttonSpacer: {\n marginRight: \".9rem\",\n },\n promptIcon: {\n marginRight: \".1rem\",\n display: \"flex\",\n alignItems: \"center\",\n height: \"2rem\",\n width: \"2rem\",\n },\n });\n\ninterface ICredentialsPromptProps {\n classes: any;\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:text/plain;charset=utf-8,\" + encodeURIComponent(text)\n );\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n};\n\nconst CredentialsPrompt = ({\n classes,\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n return (\n {\n closeModal();\n }}\n title={\n
\n
New {entity} Created
\n
\n }\n titleIcon={}\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n
\n Please Login via the configured external identity provider.\n
\n ) : (\n
\n \n \n Write these down, as this is the only time the secret will be\n displayed.\n \n
\n )}\n \n \n \n\n {!idp && (\n \n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(CredentialsPrompt);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport clsx from \"clsx\";\nimport Grid from \"@mui/material/Grid\";\nimport RadioGroup from \"@mui/material/RadioGroup\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport Radio, { RadioProps } from \"@mui/material/Radio\";\nimport { InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { fieldBasic, radioIcons, tooltipHelper } from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\n\nexport interface SelectorTypes {\n label: string;\n value: string;\n}\n\ninterface RadioGroupProps {\n selectorOptions: SelectorTypes[];\n currentSelection: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n disableOptions?: boolean;\n onChange: (e: React.ChangeEvent) => void;\n classes: any;\n displayInColumn?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n optionLabel: {\n \"&.Mui-disabled\": {\n \"& .MuiFormControlLabel-label\": {\n color: \"#9c9c9c\",\n },\n },\n \"&:last-child\": {\n marginRight: 0,\n },\n \"& .MuiFormControlLabel-label\": {\n fontSize: 12,\n color: \"#07193E\",\n },\n },\n checkedOption: {\n \"& .MuiFormControlLabel-label\": {\n fontSize: 12,\n color: \"#07193E\",\n fontWeight: 700,\n },\n },\n });\n\nconst radioStyles = makeStyles({\n root: {\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n ...radioIcons,\n});\n\nconst RadioButton = (props: RadioProps) => {\n const classes = radioStyles();\n\n return (\n }\n icon={}\n {...props}\n />\n );\n};\n\nexport const RadioGroupSelector = ({\n selectorOptions = [],\n currentSelection,\n label,\n id,\n name,\n onChange,\n tooltip = \"\",\n disableOptions = false,\n classes,\n displayInColumn = false,\n}: RadioGroupProps) => {\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n \n
\n )}\n \n \n \n \n {selectorOptions.map((selectorOption) => {\n return (\n }\n label={selectorOption.label}\n disabled={disableOptions}\n className={clsx(classes.optionLabel, {\n [classes.checkedOption]:\n selectorOption.value === currentSelection,\n })}\n\n />\n );\n })}\n \n \n \n );\n};\n\nexport default withStyles(styles)(RadioGroupSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n FormControl,\n InputLabel,\n MenuItem,\n Select,\n InputBase,\n Tooltip,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\n\nexport interface selectorTypes {\n label: string;\n value: string;\n}\n\ninterface SelectProps {\n options: selectorTypes[];\n value: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n onChange: (e: SelectChangeEvent) => void;\n disabled?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n inputLabel: {\n ...fieldBasic.inputLabel,\n \"& span\": {\n fontWeight: \"normal\",\n },\n },\n fieldContainer: {\n display: \"flex\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n });\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n height: 38,\n lineHeight: 1,\n \"label + &\": {\n marginTop: theme.spacing(3),\n },\n },\n input: {\n height: 38,\n position: \"relative\",\n color: \"#07193E\",\n fontSize: 13,\n fontWeight: 600,\n padding: \"8px 20px 10px 10px\",\n border: \"#e5e5e5 1px solid\",\n borderRadius: 4,\n display: \"flex\",\n alignItems: \"center\",\n \"&:hover\": {\n borderColor: \"#393939\",\n },\n \"&:focus\": {\n backgroundColor: \"#fff\",\n },\n },\n })\n)(InputBase);\n\nconst SelectWrapper = ({\n classes,\n id,\n name,\n onChange,\n options,\n label,\n tooltip = \"\",\n value,\n disabled = false,\n}: SelectProps) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n \n
\n )}\n \n )}\n \n }\n disabled={disabled}\n >\n {options.map((option) => (\n \n ))}\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SelectWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IWizardButton, IWizardPage } from \"./types\";\nimport { Button, LinearProgress } from \"@mui/material\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n wizardStepContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n },\n wizardComponent: {\n overflowY: \"auto\",\n marginBottom: 10,\n height: \"calc(100vh - 100px - 80px)\",\n minHeight: 400,\n flex: 1,\n width: \"100%\",\n },\n wizardModal: {\n overflowY: \"auto\",\n marginBottom: 10,\n height: \"calc(100vh - 515px)\",\n },\n buttonsContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\" as const,\n padding: \"10px 0\",\n borderTop: \"#EAEAEA 1px solid\",\n \"& button\": {\n marginLeft: 10,\n },\n \"&.forModal\": {\n paddingBottom: 0,\n },\n },\n buttonInnerContainer: {\n width: \"100%\",\n textAlign: \"right\" as const,\n marginRight: 15,\n },\n });\n\nconst WizardPage = ({\n classes,\n page,\n pageChange,\n loadingStep,\n forModal,\n}: IWizardPage) => {\n const buttonAction = (btn: IWizardButton) => {\n switch (btn.type) {\n case \"next\":\n pageChange(\"++\");\n break;\n case \"back\":\n pageChange(\"--\");\n break;\n case \"to\":\n pageChange(btn.toPage || 0);\n break;\n case \"custom\":\n default:\n }\n\n if (btn.action) {\n btn.action(pageChange);\n }\n };\n\n return (\n
\n );\n};\n\nexport default withStyles(styles)(PageLayout);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { connect } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Typography from \"@mui/material/Typography\";\nimport IconButton from \"@mui/material/IconButton\";\nimport { AppState } from \"../../../../store\";\nimport OperatorLogo from \"../../../../icons/OperatorLogo\";\nimport ConsoleLogo from \"../../../../icons/ConsoleLogo\";\nimport { IFileItem } from \"../../ObjectBrowser/reducers\";\nimport { toggleList } from \"../../ObjectBrowser/actions\";\nimport { ObjectManagerIcon } from \"../../../../icons\";\n\ninterface IPageHeader {\n classes: any;\n sidebarOpen?: boolean;\n operatorMode?: boolean;\n label: any;\n actions?: any;\n managerObjects?: IFileItem[];\n toggleList: typeof toggleList;\n middleComponent?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n headerContainer: {\n width: \"100%\",\n minHeight: 79,\n display: \"flex\",\n backgroundColor: \"#fff\",\n left: 0,\n boxShadow: \"rgba(0,0,0,.08) 0 3px 10px\",\n },\n label: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n },\n labelStyle: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 700,\n marginLeft: 34,\n marginTop: 8,\n },\n rightMenu: {\n textAlign: \"right\",\n },\n logo: {\n marginLeft: 34,\n fill: theme.palette.primary.main,\n \"& .min-icon\": {\n width: 120,\n },\n },\n middleComponent: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n });\n\nconst PageHeader = ({\n classes,\n label,\n actions,\n sidebarOpen,\n operatorMode,\n managerObjects,\n toggleList,\n middleComponent,\n}: IPageHeader) => {\n return (\n \n \n {!sidebarOpen && (\n
\n {operatorMode ? : }\n
\n )}\n \n {label}\n \n \n {middleComponent && (\n \n {middleComponent}\n \n )}\n \n {actions && actions}\n {managerObjects && managerObjects.length > 0 && (\n {\n toggleList();\n }}\n size=\"large\"\n >\n \n \n )}\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n sidebarOpen: state.system.sidebarOpen,\n operatorMode: state.system.operatorMode,\n managerObjects: state.objectBrowser.objectManager.objectsToManage,\n});\n\nconst mapDispatchToProps = {\n toggleList,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(PageHeader));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Opts } from \"../../../ListTenants/utils\";\nimport TenantSizeMK from \"./TenantSizeMK\";\n\nexport enum IMkEnvs {\n \"aws\",\n \"azure\",\n \"gcp\",\n \"default\",\n undefined,\n}\n\nexport interface IDriveSizing {\n driveSize: string;\n sizeUnit: string;\n}\n\nexport interface IntegrationConfiguration {\n typeSelection: string;\n storageClass: string;\n CPU: number;\n memory: number;\n drivesPerServer: number;\n driveSize: IDriveSizing;\n}\n\nexport const AWSStorageTypes: Opts[] = [\n { label: \"NVME\", value: \"nvme\" },\n { label: \"HDD\", value: \"hdd\" },\n];\n\nexport const AzureStorageTypes: Opts[] = [\n { label: \"Standard_L32s_v2\", value: \"Standard_L32s_v2\" },\n { label: \"Standard_L48s_v2\", value: \"Standard_L48s_v2\" },\n { label: \"Standard_L64s_v2\", value: \"Standard_L64s_v2\" },\n];\n\nexport const resourcesConfigurations = {\n \"mp-mode-aws\": IMkEnvs.aws,\n \"mp-mode-azure\": IMkEnvs.azure,\n \"mp-mode-gcp\": IMkEnvs.gcp,\n};\n\nexport const AWSConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"nvme\",\n storageClass: \"nvme-i3en-12xlarge\",\n CPU: 48,\n memory: 384,\n driveSize: { driveSize: \"7500\", sizeUnit: \"Gi\" },\n drivesPerServer: 4,\n },\n {\n typeSelection: \"hdd\",\n storageClass: \"hdd-d3en-12xlarge\",\n CPU: 8,\n memory: 32,\n driveSize: { driveSize: \"12.7\", sizeUnit: \"Ti\" },\n drivesPerServer: 4,\n },\n];\n\nexport const AzureConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"Standard_L8s_v2\",\n storageClass: \"local-nvme\",\n CPU: 8,\n memory: 64,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 1,\n },\n {\n typeSelection: \"Standard_L16s_v2\",\n storageClass: \"local-nvme\",\n CPU: 16,\n memory: 128,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 2,\n },\n {\n typeSelection: \"Standard_L32s_v2\",\n storageClass: \"local-nvme\",\n CPU: 32,\n memory: 256,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 4,\n },\n {\n typeSelection: \"Standard_L48s_v2\",\n storageClass: \"local-nvme\",\n CPU: 48,\n memory: 384,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 6,\n },\n {\n typeSelection: \"Standard_L64s_v2\",\n storageClass: \"local-nvme\",\n CPU: 64,\n memory: 512,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 8,\n },\n];\n\nexport const GCPStorageTypes: Opts[] = [{ label: \"SSD\", value: \"ssd\" }];\n\nexport const GCPConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"ssd\",\n storageClass: \"local-ssd\",\n CPU: 32,\n memory: 128,\n driveSize: { driveSize: \"368\", sizeUnit: \"Gi\" },\n drivesPerServer: 24,\n },\n];\n\nexport const mkPanelConfigurations = {\n [IMkEnvs.aws]: {\n variantSelectorLabel: \"Storage Type\",\n variantSelectorValues: AWSStorageTypes,\n configurations: AWSConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.azure]: {\n variantSelectorLabel: \"VM Size\",\n variantSelectorValues: AzureStorageTypes,\n configurations: AzureConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.gcp]: {\n variantSelectorLabel: \"Storage Type\",\n variantSelectorValues: GCPStorageTypes,\n configurations: GCPConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.default]: {},\n [IMkEnvs.undefined]: {},\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, Paper, SelectChangeEvent } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { isPageValid, updateAddField } from \"../../actions\";\nimport { AppState } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport { ISecurityContext } from \"../../types\";\n\ninterface IConfigureProps {\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n storageClasses: any;\n classes: any;\n customImage: boolean;\n imageName: string;\n customDockerhub: boolean;\n imageRegistry: string;\n imageRegistryUsername: string;\n imageRegistryPassword: string;\n exposeMinIO: boolean;\n exposeConsole: boolean;\n prometheusCustom: boolean;\n tenantCustom: boolean;\n logSearchCustom: boolean;\n logSearchVolumeSize: string;\n logSearchSizeFactor: string;\n prometheusVolumeSize: string;\n prometheusSizeFactor: string;\n logSearchSelectedStorageClass: string;\n logSearchImage: string;\n kesImage: string;\n logSearchPostgresImage: string;\n logSearchPostgresInitImage: string;\n prometheusSelectedStorageClass: string;\n prometheusImage: string;\n prometheusSidecarImage: string;\n prometheusInitImage: string;\n selectedStorageClass: string;\n tenantSecurityContext: ISecurityContext;\n logSearchSecurityContext: ISecurityContext;\n logSearchPostgresSecurityContext: ISecurityContext;\n prometheusSecurityContext: ISecurityContext;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n tenantCustomizationFields: {\n marginLeft: 30, // 2nd Level(15+15)\n width: \"88%\",\n margin: \"auto\",\n },\n containerItem: {\n marginRight: 15,\n },\n fieldGroup: {\n ...createTenantCommon.fieldGroup,\n paddingTop: 15,\n marginBottom: 25,\n },\n responsiveSectionItem: {\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n\n \"& div > div\": {\n marginBottom: 5,\n marginRight: 0,\n },\n },\n },\n\n logSearchCustomFields: {\n marginLeft: 20, // 2nd Level(15+15)\n padding: 10,\n width: \"90%\",\n margin: \"auto\",\n },\n fieldSpaceTop: {\n marginTop: 15,\n },\n prometheusCustomFields: {\n marginLeft: 20, // 2nd Level(15+15)\n padding: 10,\n width: \"90%\",\n margin: \"auto\",\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Configure = ({\n classes,\n storageClasses,\n customImage,\n imageName,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n exposeMinIO,\n exposeConsole,\n prometheusCustom,\n tenantCustom,\n logSearchCustom,\n logSearchVolumeSize,\n logSearchSizeFactor,\n logSearchImage,\n kesImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n prometheusVolumeSize,\n prometheusSizeFactor,\n logSearchSelectedStorageClass,\n prometheusSelectedStorageClass,\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n updateAddField,\n isPageValid,\n selectedStorageClass,\n tenantSecurityContext,\n logSearchSecurityContext,\n logSearchPostgresSecurityContext,\n prometheusSecurityContext,\n}: IConfigureProps) => {\n const [validationErrors, setValidationErrors] = useState({});\n\n const configureSTClasses = [\n { label: \"Default\", value: \"default\" },\n ...storageClasses,\n ];\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n updateAddField(\"configure\", field, value);\n },\n [updateAddField]\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n if (tenantCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"tenant_securityContext_runAsUser\",\n required: true,\n value: tenantSecurityContext.runAsUser,\n customValidation:\n tenantSecurityContext.runAsUser === \"\" ||\n parseInt(tenantSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_runAsGroup\",\n required: true,\n value: tenantSecurityContext.runAsGroup,\n customValidation:\n tenantSecurityContext.runAsGroup === \"\" ||\n parseInt(tenantSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_fsGroup\",\n required: true,\n value: tenantSecurityContext.fsGroup,\n customValidation:\n tenantSecurityContext.fsGroup === \"\" ||\n parseInt(tenantSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n if (prometheusCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"prometheus_storage_class\",\n required: true,\n value: prometheusSelectedStorageClass,\n customValidation: prometheusSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"prometheus_volume_size\",\n required: true,\n value: prometheusVolumeSize,\n customValidation:\n prometheusVolumeSize === \"\" || parseInt(prometheusVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greater than 0`,\n },\n {\n fieldKey: \"prometheus_securityContext_runAsUser\",\n required: true,\n value: prometheusSecurityContext.runAsUser,\n customValidation:\n prometheusSecurityContext.runAsUser === \"\" ||\n parseInt(prometheusSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"prometheus_securityContext_runAsGroup\",\n required: true,\n value: prometheusSecurityContext.runAsGroup,\n customValidation:\n prometheusSecurityContext.runAsGroup === \"\" ||\n parseInt(prometheusSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"prometheus_securityContext_fsGroup\",\n required: true,\n value: prometheusSecurityContext.fsGroup,\n customValidation:\n prometheusSecurityContext.fsGroup === \"\" ||\n parseInt(prometheusSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n if (logSearchCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"log_search_storage_class\",\n required: true,\n value: logSearchSelectedStorageClass,\n customValidation: logSearchSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"log_search_volume_size\",\n required: true,\n value: logSearchVolumeSize,\n customValidation:\n logSearchVolumeSize === \"\" || parseInt(logSearchVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greatter than 0`,\n },\n {\n fieldKey: \"logSearch_securityContext_runAsUser\",\n required: true,\n value: logSearchSecurityContext.runAsUser,\n customValidation:\n logSearchSecurityContext.runAsUser === \"\" ||\n parseInt(logSearchSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"logSearch_securityContext_runAsGroup\",\n required: true,\n value: logSearchSecurityContext.runAsGroup,\n customValidation:\n logSearchSecurityContext.runAsGroup === \"\" ||\n parseInt(logSearchSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"logSearch_securityContext_fsGroup\",\n required: true,\n value: logSearchSecurityContext.fsGroup,\n customValidation:\n logSearchSecurityContext.fsGroup === \"\" ||\n parseInt(logSearchSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_runAsUser\",\n required: true,\n value: logSearchPostgresSecurityContext.runAsUser,\n customValidation:\n logSearchPostgresSecurityContext.runAsUser === \"\" ||\n parseInt(logSearchPostgresSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_runAsGroup\",\n required: true,\n value: prometheusSecurityContext.runAsGroup,\n customValidation:\n logSearchPostgresSecurityContext.runAsGroup === \"\" ||\n parseInt(logSearchPostgresSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_fsGroup\",\n required: true,\n value: logSearchPostgresSecurityContext.fsGroup,\n customValidation:\n logSearchPostgresSecurityContext.fsGroup === \"\" ||\n parseInt(logSearchPostgresSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n\n if (customImage) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"image\",\n required: false,\n value: imageName,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/minio:VERSION'\",\n },\n {\n fieldKey: \"logSearchImage\",\n required: false,\n value: logSearchImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/logsearchapi:VERSION'\",\n },\n {\n fieldKey: \"kesImage\",\n required: false,\n value: kesImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/kes:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresImage\",\n required: false,\n value: logSearchPostgresImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/postgres:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresInitImage\",\n required: false,\n value: logSearchPostgresInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n {\n fieldKey: \"prometheusImage\",\n required: false,\n value: prometheusImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/prometheus:VERSION'\",\n },\n {\n fieldKey: \"prometheusSidecarImage\",\n required: false,\n value: prometheusSidecarImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'project/container:VERSION'\",\n },\n {\n fieldKey: \"prometheusInitImage\",\n required: false,\n value: prometheusInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n ];\n if (customDockerhub) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"registry\",\n required: true,\n value: imageRegistry,\n },\n {\n fieldKey: \"registryUsername\",\n required: true,\n value: imageRegistryUsername,\n },\n {\n fieldKey: \"registryPassword\",\n required: true,\n value: imageRegistryPassword,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n isPageValid(\"configure\", Object.keys(commonVal).length === 0);\n\n setValidationErrors(commonVal);\n }, [\n customImage,\n imageName,\n logSearchImage,\n kesImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n isPageValid,\n prometheusCustom,\n tenantCustom,\n logSearchCustom,\n prometheusSelectedStorageClass,\n prometheusVolumeSize,\n logSearchSelectedStorageClass,\n logSearchVolumeSize,\n tenantSecurityContext,\n logSearchSecurityContext,\n logSearchPostgresSecurityContext,\n prometheusSecurityContext,\n ]);\n\n useEffect(() => {\n // New default values in current selection is invalid\n if (storageClasses.length > 0) {\n const filterPrometheus = storageClasses.filter(\n (item: any) => item.value === prometheusSelectedStorageClass\n );\n if (filterPrometheus.length === 0) {\n updateField(\"prometheusSelectedStorageClass\", \"default\");\n }\n\n const filterLogSearch = storageClasses.filter(\n (item: any) => item.value === logSearchSelectedStorageClass\n );\n if (filterLogSearch.length === 0) {\n updateField(\"logSearchSelectedStorageClass\", \"default\");\n }\n }\n }, [\n logSearchSelectedStorageClass,\n prometheusSelectedStorageClass,\n selectedStorageClass,\n storageClasses,\n updateField,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n
\n
Configure
\n \n Basic configurations for tenant management\n \n
\n
\n
Expose Services
\n \n Whether the tenant's services should request an external IP.\n \n
\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n })\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"1rem 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Button, LinearProgress } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n formFieldStyles,\n modalBasic,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FileSelector from \"../../Common/FormComponents/FileSelector/FileSelector\";\nimport api from \"../../../../common/api\";\nimport { ITierElement } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { LockIcon } from \"../../../../icons\";\n\ninterface ITierCredentialsModal {\n open: boolean;\n closeModalAndRefresh: (refresh: boolean) => any;\n classes: any;\n tierData: ITierElement;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonContainer: {\n textAlign: \"right\",\n },\n ...modalBasic,\n ...formFieldStyles,\n });\n\nconst UpdateTierCredentialsModal = ({\n open,\n closeModalAndRefresh,\n classes,\n tierData,\n setModalErrorSnackMessage,\n}: ITierCredentialsModal) => {\n const [savingTiers, setSavingTiers] = useState(false);\n const [accessKey, setAccessKey] = useState(\"\");\n const [secretKey, setSecretKey] = useState(\"\");\n\n const [creds, setCreds] = useState(\"\");\n const [encodedCreds, setEncodedCreds] = useState(\"\");\n\n const [accountName, setAccountName] = useState(\"\");\n const [accountKey, setAccountKey] = useState(\"\");\n\n // Validations\n const [isFormValid, setIsFormValid] = useState(true);\n\n const type = get(tierData, \"type\", \"\");\n const name = get(tierData, `${type}.name`, \"\");\n\n useEffect(() => {\n let valid = true;\n\n if (type === \"s3\" || type === \"azure\") {\n if (accountName === \"\" || accountKey === \"\") {\n valid = false;\n }\n } else if (type === \"gcs\") {\n if (encodedCreds === \"\") {\n valid = false;\n }\n }\n setIsFormValid(valid);\n }, [accountKey, accountName, encodedCreds, type]);\n\n const addRecord = () => {\n let rules = {};\n\n if (type === \"s3\" || type === \"azure\") {\n rules = {\n access_key: accountName,\n secret_key: accountKey,\n };\n } else if (type === \"gcs\") {\n rules = {\n creds: encodedCreds,\n };\n }\n if (name !== \"\") {\n api\n .invoke(\"PUT\", `/api/v1/admin/tiers/${type}/${name}/credentials`, rules)\n .then(() => {\n setSavingTiers(false);\n closeModalAndRefresh(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setSavingTiers(false);\n setModalErrorSnackMessage(err);\n });\n } else {\n setModalErrorSnackMessage({\n errorMessage: \"There was an error retrieving tier information\",\n detailedError: \"\",\n });\n }\n };\n\n return (\n }\n onClose={() => {\n closeModalAndRefresh(false);\n }}\n title={`Update Credentials - ${type} / ${name}`}\n >\n \n \n );\n};\n\nconst connector = connect(null, {\n setModalErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(UpdateTierCredentialsModal));\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak && }\n \n {errorMessage}\n \n \n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\"\n}), 'AttachFile');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');\n\nexports.default = _default;"],"names":["withStyles","theme","createStyles","fieldBasic","tooltipHelper","valueString","maxWidth","whiteSpace","overflow","textOverflow","marginTop","fileInputField","margin","flexFlow","fileInputStyles","inputLabel","fontWeight","textBoxContainer","border","paddingLeft","label","classes","onChange","id","name","disabled","tooltip","required","error","accept","value","useState","showFileSelector","setShowSelector","Grid","item","xs","className","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","title","placement","HelpIcon","type","e","fileName","get","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","color","component","onClick","disableRipple","disableFocusRipple","size","Cancel","ErrorBlock","errorMessage","fileReselect","AttachFile","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","flexGrow","position","overlayAction","right","top","maxHeight","autoComplete","multiline","index","placeholder","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","inputProps","container","clsx","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","disableTouchRipple","timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","setModalErrorSnackMessage","connect","state","modalSnackMessage","system","modalSnackBar","modalErrorContainer","width","backgroundColor","borderLeftWidth","borderRadius","zIndex","padding","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","fontSize","cursor","errorTitle","display","alignItems","errorLabel","marginLeft","marginRight","messageIcon","height","detailsButton","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","message","messageDetails","Fragment","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","connector","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","snackBarCommon","onClose","modalOpen","children","wideLimit","noContentPadding","titleIcon","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent","buttonContainer","textAlign","modalBasic","formFieldStyles","closeModalAndRefresh","tierData","savingTiers","setSavingTiers","accessKey","setAccessKey","secretKey","setSecretKey","creds","setCreds","encodedCreds","setEncodedCreds","accountName","setAccountName","accountKey","setAccountKey","isFormValid","setIsFormValid","valid","noValidate","onSubmit","preventDefault","rules","access_key","secret_key","api","then","catch","err","addRecord","formFieldRow","encodedValue","variant","errorBlock","palette","main","withBreak","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/js/1069.57853a28.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Configurations/TiersConfiguration/UpdateTierCredentialsModal.tsx","screens/shared/ErrorBlock.tsx","../node_modules/@mui/icons-material/AttachFile.js","../node_modules/@mui/icons-material/Cancel.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n })\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"1rem 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Button, LinearProgress } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n formFieldStyles,\n modalBasic,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FileSelector from \"../../Common/FormComponents/FileSelector/FileSelector\";\nimport api from \"../../../../common/api\";\nimport { ITierElement } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { LockIcon } from \"../../../../icons\";\n\ninterface ITierCredentialsModal {\n open: boolean;\n closeModalAndRefresh: (refresh: boolean) => any;\n classes: any;\n tierData: ITierElement;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonContainer: {\n textAlign: \"right\",\n },\n ...modalBasic,\n ...formFieldStyles,\n });\n\nconst UpdateTierCredentialsModal = ({\n open,\n closeModalAndRefresh,\n classes,\n tierData,\n setModalErrorSnackMessage,\n}: ITierCredentialsModal) => {\n const [savingTiers, setSavingTiers] = useState(false);\n const [accessKey, setAccessKey] = useState(\"\");\n const [secretKey, setSecretKey] = useState(\"\");\n\n const [creds, setCreds] = useState(\"\");\n const [encodedCreds, setEncodedCreds] = useState(\"\");\n\n const [accountName, setAccountName] = useState(\"\");\n const [accountKey, setAccountKey] = useState(\"\");\n\n // Validations\n const [isFormValid, setIsFormValid] = useState(true);\n\n const type = get(tierData, \"type\", \"\");\n const name = get(tierData, `${type}.name`, \"\");\n\n useEffect(() => {\n let valid = true;\n\n if (type === \"s3\" || type === \"azure\") {\n if (accountName === \"\" || accountKey === \"\") {\n valid = false;\n }\n } else if (type === \"gcs\") {\n if (encodedCreds === \"\") {\n valid = false;\n }\n }\n setIsFormValid(valid);\n }, [accountKey, accountName, encodedCreds, type]);\n\n const addRecord = () => {\n let rules = {};\n\n if (type === \"s3\" || type === \"azure\") {\n rules = {\n access_key: accountName,\n secret_key: accountKey,\n };\n } else if (type === \"gcs\") {\n rules = {\n creds: encodedCreds,\n };\n }\n if (name !== \"\") {\n api\n .invoke(\"PUT\", `/api/v1/admin/tiers/${type}/${name}/credentials`, rules)\n .then(() => {\n setSavingTiers(false);\n closeModalAndRefresh(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setSavingTiers(false);\n setModalErrorSnackMessage(err);\n });\n } else {\n setModalErrorSnackMessage({\n errorMessage: \"There was an error retrieving tier information\",\n detailedError: \"\",\n });\n }\n };\n\n return (\n }\n onClose={() => {\n closeModalAndRefresh(false);\n }}\n title={`Update Credentials - ${type} / ${name}`}\n >\n \n \n );\n};\n\nconst connector = connect(null, {\n setModalErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(UpdateTierCredentialsModal));\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak && }\n \n {errorMessage}\n \n \n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\"\n}), 'AttachFile');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');\n\nexports.default = _default;"],"names":["withStyles","theme","createStyles","fieldBasic","tooltipHelper","valueString","maxWidth","whiteSpace","overflow","textOverflow","marginTop","fileInputField","margin","flexFlow","fileInputStyles","inputLabel","fontWeight","textBoxContainer","border","paddingLeft","label","classes","onChange","id","name","disabled","tooltip","required","error","accept","value","useState","showFileSelector","setShowSelector","Grid","item","xs","className","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","title","placement","HelpIcon","type","e","fileName","get","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","color","component","onClick","disableRipple","disableFocusRipple","size","Cancel","ErrorBlock","errorMessage","fileReselect","AttachFile","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","flexGrow","position","overlayAction","right","top","maxHeight","autoComplete","multiline","index","placeholder","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","inputProps","container","clsx","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","disableTouchRipple","timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","setModalErrorSnackMessage","connect","state","modalSnackMessage","system","modalSnackBar","modalErrorContainer","width","backgroundColor","borderLeftWidth","borderRadius","zIndex","padding","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","fontSize","cursor","errorTitle","display","alignItems","errorLabel","marginLeft","marginRight","messageIcon","height","detailsButton","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","message","messageDetails","Fragment","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","connector","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","snackBarCommon","onClose","modalOpen","children","wideLimit","noContentPadding","titleIcon","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent","buttonContainer","textAlign","modalBasic","formFieldStyles","closeModalAndRefresh","tierData","savingTiers","setSavingTiers","accessKey","setAccessKey","secretKey","setSecretKey","creds","setCreds","encodedCreds","setEncodedCreds","accountName","setAccountName","accountKey","setAccountKey","isFormValid","setIsFormValid","valid","noValidate","onSubmit","preventDefault","rules","access_key","secret_key","api","then","catch","err","addRecord","formFieldRow","encodedValue","variant","errorBlock","palette","main","withBreak","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1140.dc4f7cbb.chunk.js b/portal-ui/build/static/js/1140.dc4f7cbb.chunk.js
new file mode 100644
index 000000000..8b871c9aa
--- /dev/null
+++ b/portal-ui/build/static/js/1140.dc4f7cbb.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1140],{39080:function(e,n,i){i.r(n),i.d(n,{default:function(){return Z}});var t=i(18489),r=i(35531),s=i(50390),a=i(38342),l=i.n(a),c=i(86509),o=i(4285),d=i(66946),u=i(76352),m=i(25594),h=i(58217),p=i(65771),x=i(70758),y=i(33034),g=i.n(y),f=i(98280),j=i(72462),v=i(62559),b=(0,o.Z)((function(e){return(0,c.Z)({container:{display:"flex",flexFlow:"column",padding:"20px 0 8px 0"},inputWithCopy:{"& .MuiInputBase-root ":{width:"100%",background:"#FBFAFA","& .MuiInputBase-input":{height:".8rem"},"& .MuiInputAdornment-positionEnd":{marginRight:".5rem","& .MuiButtonBase-root":{height:"2rem"}}},"& .MuiButtonBase-root .min-icon":{width:".8rem",height:".8rem"}},inputLabel:(0,t.Z)((0,t.Z)({},j.YI.inputLabel),{},{fontSize:".8rem"})})}))((function(e){var n=e.label,i=void 0===n?"":n,t=e.value,r=void 0===t?"":t,s=e.classes,a=void 0===s?{}:s;return(0,v.jsxs)("div",{className:a.container,children:[(0,v.jsxs)("div",{className:a.inputLabel,children:[i,":"]}),(0,v.jsx)("div",{className:a.inputWithCopy,children:(0,v.jsx)(h.Z,{value:r,readOnly:!0,endAdornment:(0,v.jsx)(p.Z,{position:"end",children:(0,v.jsx)(g(),{text:r,children:(0,v.jsx)(x.Z,{"aria-label":"copy",tooltip:"Copy",onClick:function(){},onMouseDown:function(){},edge:"end",children:(0,v.jsx)(f.TI,{})})})})})})]})})),w=i(47424),Z=(0,o.Z)((function(e){return(0,c.Z)({warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}},credentialTitle:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},buttonContainer:{textAlign:"right",marginTop:"1rem"},credentialsPanel:{overflowY:"auto",maxHeight:350},promptTitle:{display:"flex",alignItems:"center"},buttonSpacer:{marginRight:".9rem"},promptIcon:{marginRight:".1rem",display:"flex",alignItems:"center",height:"2rem",width:"2rem"}})}))((function(e){var n=e.classes,i=e.newServiceAccount,a=e.open,c=e.closeModal,o=e.entity;if(!i)return null;var h=l()(i,"console",null),p=l()(i,"idp",!1);return(0,v.jsx)(u.Z,{modalOpen:a,onClose:function(){c()},title:(0,v.jsx)("div",{className:n.promptTitle,children:(0,v.jsxs)("div",{children:["New ",o," Created"]})}),titleIcon:(0,v.jsx)(f.tV,{}),children:(0,v.jsxs)(m.ZP,{container:!0,children:[(0,v.jsxs)(m.ZP,{item:!0,xs:12,className:n.formScrollable,children:["A new ",o," has been created with the following details:",!p&&h&&(0,v.jsx)(s.Fragment,{children:(0,v.jsxs)(m.ZP,{item:!0,xs:12,className:n.credentialsPanel,children:[(0,v.jsx)("div",{className:n.credentialTitle,children:"Console Credentials"}),Array.isArray(h)&&h.map((function(e,n){return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(b,{label:"Access Key",value:e.accessKey}),(0,v.jsx)(b,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(h)&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(b,{label:"Access Key",value:h.accessKey}),(0,v.jsx)(b,{label:"Secret Key",value:h.secretKey})]})]})}),p?(0,v.jsx)("div",{className:n.warningBlock,children:"Please Login via the configured external identity provider."}):(0,v.jsxs)("div",{className:n.warningBlock,children:[(0,v.jsx)(w.Z,{}),(0,v.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,v.jsxs)(m.ZP,{item:!0,xs:12,className:n.buttonContainer,children:[(0,v.jsx)(d.Z,{variant:"outlined",className:n.buttonSpacer,onClick:function(){c()},color:"primary",children:"Done"}),!p&&(0,v.jsx)(d.Z,{onClick:function(){var e={};if(h)if(Array.isArray(h)){var n=h.map((function(e){return{access_key:e.accessKey,secret_key:e.secretKey}}));e={console:(0,r.Z)(n)}}else e={console:[{access_key:h.accessKey,secret_key:h.secretKey}]};!function(e,n){var i=document.createElement("a");i.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(n)),i.setAttribute("download",e),i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)}("credentials.json",JSON.stringify((0,t.Z)({},e)))},endIcon:(0,v.jsx)(f._8,{}),variant:"contained",color:"primary",children:"Download"})]})]})})}))}}]);
+//# sourceMappingURL=1140.dc4f7cbb.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1140.dc4f7cbb.chunk.js.map b/portal-ui/build/static/js/1140.dc4f7cbb.chunk.js.map
new file mode 100644
index 000000000..b31982dce
--- /dev/null
+++ b/portal-ui/build/static/js/1140.dc4f7cbb.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1140.dc4f7cbb.chunk.js","mappings":"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","sources":["screens/Console/Common/CredentialsPrompt/CredentialItem.tsx","screens/Console/Common/CredentialsPrompt/CredentialsPrompt.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { InputAdornment, OutlinedInput } from \"@mui/material\";\nimport BoxIconButton from \"../BoxIconButton/BoxIconButton\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { CopyIcon } from \"../../../../icons\";\nimport { fieldBasic } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n container: {\n display: \"flex\",\n flexFlow: \"column\",\n padding: \"20px 0 8px 0\",\n },\n inputWithCopy: {\n \"& .MuiInputBase-root \": {\n width: \"100%\",\n background: \"#FBFAFA\",\n \"& .MuiInputBase-input\": {\n height: \".8rem\",\n },\n \"& .MuiInputAdornment-positionEnd\": {\n marginRight: \".5rem\",\n \"& .MuiButtonBase-root\": {\n height: \"2rem\",\n },\n },\n },\n \"& .MuiButtonBase-root .min-icon\": {\n width: \".8rem\",\n height: \".8rem\",\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: \".8rem\",\n },\n });\n\nconst CredentialItem = ({\n label = \"\",\n value = \"\",\n classes = {},\n}: {\n label: string;\n value: string;\n classes: any;\n}) => {\n return (\n
\n );\n};\n\nexport default withStyles(styles)(CredentialItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { NewServiceAccount } from \"./types\";\nimport { Button } from \"@mui/material\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport CredentialItem from \"./CredentialItem\";\nimport WarnIcon from \"../../../../icons/WarnIcon\";\nimport { DownloadIcon, ServiceAccountCredentialsIcon } from \"../../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n credentialTitle: {\n padding: \".8rem 0 0 0\",\n fontWeight: 600,\n fontSize: \".9rem\",\n },\n buttonContainer: {\n textAlign: \"right\",\n marginTop: \"1rem\",\n },\n credentialsPanel: {\n overflowY: \"auto\",\n maxHeight: 350,\n },\n promptTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n buttonSpacer: {\n marginRight: \".9rem\",\n },\n promptIcon: {\n marginRight: \".1rem\",\n display: \"flex\",\n alignItems: \"center\",\n height: \"2rem\",\n width: \"2rem\",\n },\n });\n\ninterface ICredentialsPromptProps {\n classes: any;\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:text/plain;charset=utf-8,\" + encodeURIComponent(text)\n );\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n};\n\nconst CredentialsPrompt = ({\n classes,\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n return (\n {\n closeModal();\n }}\n title={\n
\n
New {entity} Created
\n
\n }\n titleIcon={}\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n
\n Please Login via the configured external identity provider.\n
\n ) : (\n
\n \n \n Write these down, as this is the only time the secret will be\n displayed.\n \n
\n )}\n \n \n \n\n {!idp && (\n \n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(CredentialsPrompt);\n"],"names":["withStyles","theme","createStyles","container","display","flexFlow","padding","inputWithCopy","width","background","height","marginRight","inputLabel","fieldBasic","fontSize","label","value","classes","className","OutlinedInput","readOnly","endAdornment","InputAdornment","position","text","BoxIconButton","tooltip","onClick","onMouseDown","edge","warningBlock","color","margin","alignItems","credentialTitle","fontWeight","buttonContainer","textAlign","marginTop","credentialsPanel","overflowY","maxHeight","promptTitle","buttonSpacer","promptIcon","newServiceAccount","open","closeModal","entity","consoleCreds","get","idp","ModalWrapper","modalOpen","onClose","title","titleIcon","Grid","item","xs","formScrollable","Array","isArray","map","credentialsPair","index","accessKey","secretKey","WarnIcon","Button","variant","consoleExtras","cCreds","itemMap","access_key","secret_key","console","filename","element","document","createElement","setAttribute","encodeURIComponent","style","body","appendChild","click","removeChild","download","JSON","stringify","endIcon"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1237.cc7c6a14.chunk.js b/portal-ui/build/static/js/1237.cc7c6a14.chunk.js
new file mode 100644
index 000000000..485a58205
--- /dev/null
+++ b/portal-ui/build/static/js/1237.cc7c6a14.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1237],{37882:function(n,e,r){var o=r(18489),t=r(50390),i=r(62559);e.Z=function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;function r(r){return(0,i.jsx)(t.Suspense,{fallback:e,children:(0,i.jsx)(n,(0,o.Z)({},r))})}return r}},25534:function(n,e,r){var o=r(18489),t=(r(50390),r(25594)),i=r(86509),a=r(4285),c=r(72462),l=r(62559);e.Z=(0,a.Z)((function(n){return(0,i.Z)((0,o.Z)({},c.Bw))}))((function(n){var e=n.classes,r=n.className,o=void 0===r?"":r,i=n.children;return(0,l.jsx)("div",{className:e.contentSpacer,children:(0,l.jsx)(t.ZP,{container:!0,children:(0,l.jsx)(t.ZP,{item:!0,xs:12,className:o,children:i})})})}))},31237:function(n,e,r){r.r(e);var o=r(50390),t=r(24442),i=r(70971),a=r(34424),c=r(44149),l=r(36176),u=r(37882),s=r(49495),d=r(62559),f=(0,u.Z)(o.lazy((function(){return Promise.all([r.e(14),r.e(2066),r.e(3152),r.e(3690),r.e(5399),r.e(7777),r.e(3967)]).then(r.bind(r,63967))}))),p=(0,u.Z)(o.lazy((function(){return Promise.all([r.e(14),r.e(2066),r.e(3152),r.e(3690),r.e(5399),r.e(9998),r.e(8954),r.e(7777),r.e(4084)]).then(r.bind(r,5604))}))),m=(0,a.$j)((function(n){return{open:n.system.sidebarOpen}}),{setMenuOpen:c.gG});e.default=(0,i.EN)(m((function(){return(0,d.jsx)(i.F0,{history:t.Z,children:(0,d.jsxs)(i.rs,{children:[(0,d.jsx)(i.AW,{path:s.gA.POLICIES,exact:!0,component:f}),(0,d.jsx)(i.AW,{path:"".concat(s.gA.POLICIES,"/*"),component:p}),(0,d.jsx)(i.AW,{path:"/",component:f}),(0,d.jsx)(i.AW,{component:l.Z})]})})})))},36176:function(n,e,r){r.d(e,{Z:function(){return u}});r(50390);var o=r(56805),t=r(35477),i=r(10567),a=r(62559);function c(){return(0,a.jsxs)(t.Z,{variant:"body2",color:"textSecondary",align:"center",children:["Copyright \xa9 ",(0,a.jsx)(i.Z,{color:"inherit",href:"https://min.io/?ref=con",children:"MinIO"})," ",(new Date).getFullYear(),"."]})}var l=r(25534),u=function(){return(0,a.jsx)(l.Z,{children:(0,a.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%",textAlign:"center",margin:"auto",flexFlow:"column"},children:[(0,a.jsx)(o.Z,{sx:{fontSize:"110%",margin:"0 0 0.25rem",color:"#909090"},children:"404 Error"}),(0,a.jsx)(o.Z,{sx:{fontStyle:"normal",fontSize:"clamp(2rem,calc(2rem + 1.2vw),3rem)",fontWeight:700},children:"Sorry, the page could not be found."}),(0,a.jsx)(o.Z,{mt:5,children:(0,a.jsx)(c,{})})]})})}},10567:function(n,e,r){r.d(e,{Z:function(){return k}});var o=r(23430),t=r(36222),i=r(1048),a=r(32793),c=r(50390),l=r(44977),u=r(50076),s=r(29001),d=r(36128),f=r(91442),p=r(8208),m=r(15573),h=r(42081),x=r(3299),Z=r(35477),v=r(10594);function y(n){return(0,v.Z)("MuiLink",n)}var b=(0,r(43349).Z)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"]),g=r(62559),j=["className","color","component","onBlur","onFocus","TypographyClasses","underline","variant"],S={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},w=(0,p.ZP)(Z.Z,{name:"MuiLink",slot:"Root",overridesResolver:function(n,e){var r=n.ownerState;return[e.root,e["underline".concat((0,f.Z)(r.underline))],"button"===r.component&&e.button]}})((function(n){var e=n.theme,r=n.ownerState,o=(0,s.D)(e,"palette.".concat(function(n){return S[n]||n}(r.color)))||r.color;return(0,a.Z)({},"none"===r.underline&&{textDecoration:"none"},"hover"===r.underline&&{textDecoration:"none","&:hover":{textDecoration:"underline"}},"always"===r.underline&&{textDecoration:"underline",textDecorationColor:"inherit"!==o?(0,d.Fq)(o,.4):void 0,"&:hover":{textDecorationColor:"inherit"}},"button"===r.component&&(0,t.Z)({position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"}},"&.".concat(b.focusVisible),{outline:"auto"}))})),k=c.forwardRef((function(n,e){var r=(0,m.Z)({props:n,name:"MuiLink"}),t=r.className,s=r.color,d=void 0===s?"primary":s,p=r.component,Z=void 0===p?"a":p,v=r.onBlur,b=r.onFocus,S=r.TypographyClasses,k=r.underline,C=void 0===k?"always":k,A=r.variant,F=void 0===A?"inherit":A,D=(0,i.Z)(r,j),N=(0,h.Z)(),P=N.isFocusVisibleRef,M=N.onBlur,W=N.onFocus,z=N.ref,I=c.useState(!1),L=(0,o.Z)(I,2),V=L[0],B=L[1],O=(0,x.Z)(e,z),R=(0,a.Z)({},r,{color:d,component:Z,focusVisible:V,underline:C,variant:F}),E=function(n){var e=n.classes,r=n.component,o=n.focusVisible,t=n.underline,i={root:["root","underline".concat((0,f.Z)(t)),"button"===r&&"button",o&&"focusVisible"]};return(0,u.Z)(i,y,e)}(R);return(0,g.jsx)(w,(0,a.Z)({className:(0,l.Z)(E.root,t),classes:S,color:d,component:Z,onBlur:function(n){M(n),!1===P.current&&B(!1),v&&v(n)},onFocus:function(n){W(n),!0===P.current&&B(!0),b&&b(n)},ref:O,ownerState:R,variant:F},D))}))}}]);
+//# sourceMappingURL=1237.cc7c6a14.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1237.f11be969.chunk.js.map b/portal-ui/build/static/js/1237.cc7c6a14.chunk.js.map
similarity index 99%
rename from portal-ui/build/static/js/1237.f11be969.chunk.js.map
rename to portal-ui/build/static/js/1237.cc7c6a14.chunk.js.map
index 482dbbc23..d1957b203 100644
--- a/portal-ui/build/static/js/1237.f11be969.chunk.js.map
+++ b/portal-ui/build/static/js/1237.cc7c6a14.chunk.js.map
@@ -1 +1 @@
-{"version":3,"file":"static/js/1237.f11be969.chunk.js","mappings":"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","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/Common/Layout/PageLayout.tsx","screens/Console/Policies/Policies.tsx","common/Copyright.tsx","screens/NotFoundPage.tsx","../node_modules/@mui/material/Link/linkClasses.js","../node_modules/@mui/material/Link/Link.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense
(\n WrappedComponent: ComponentType
,\n fallback: SuspenseProps[\"fallback\"] = null\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","import React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { pageContentStyles } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...pageContentStyles,\n });\n\ntype PageLayoutProps = {\n className?: string;\n classes?: any;\n children: any;\n};\n\nconst PageLayout = ({ classes, className = \"\", children }: PageLayoutProps) => {\n return (\n
\n );\n};\n\nexport default withStyles(styles)(PageLayout);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { connect } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Typography from \"@mui/material/Typography\";\nimport IconButton from \"@mui/material/IconButton\";\nimport { AppState } from \"../../../../store\";\nimport OperatorLogo from \"../../../../icons/OperatorLogo\";\nimport ConsoleLogo from \"../../../../icons/ConsoleLogo\";\nimport { IFileItem } from \"../../ObjectBrowser/reducers\";\nimport { toggleList } from \"../../ObjectBrowser/actions\";\nimport { ObjectManagerIcon } from \"../../../../icons\";\n\ninterface IPageHeader {\n classes: any;\n sidebarOpen?: boolean;\n operatorMode?: boolean;\n label: any;\n actions?: any;\n managerObjects?: IFileItem[];\n toggleList: typeof toggleList;\n middleComponent?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n headerContainer: {\n width: \"100%\",\n minHeight: 79,\n display: \"flex\",\n backgroundColor: \"#fff\",\n left: 0,\n boxShadow: \"rgba(0,0,0,.08) 0 3px 10px\",\n },\n label: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n },\n labelStyle: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 700,\n marginLeft: 34,\n marginTop: 8,\n },\n rightMenu: {\n textAlign: \"right\",\n },\n logo: {\n marginLeft: 34,\n fill: theme.palette.primary.main,\n \"& .min-icon\": {\n width: 120,\n },\n },\n middleComponent: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n });\n\nconst PageHeader = ({\n classes,\n label,\n actions,\n sidebarOpen,\n operatorMode,\n managerObjects,\n toggleList,\n middleComponent,\n}: IPageHeader) => {\n return (\n \n \n {!sidebarOpen && (\n
\n {operatorMode ? : }\n
\n )}\n \n {label}\n \n \n {middleComponent && (\n \n {middleComponent}\n \n )}\n \n {actions && actions}\n {managerObjects && managerObjects.length > 0 && (\n {\n toggleList();\n }}\n size=\"large\"\n >\n \n \n )}\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n sidebarOpen: state.system.sidebarOpen,\n operatorMode: state.system.operatorMode,\n managerObjects: state.objectBrowser.objectManager.objectsToManage,\n});\n\nconst mapDispatchToProps = {\n toggleList,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(PageHeader));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Button, Grid, TextField } from \"@mui/material\";\nimport { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { AppState } from \"../../../store\";\nimport { connect } from \"react-redux\";\nimport {\n setTraceStarted,\n traceMessageReceived,\n traceResetMessages,\n} from \"./actions\";\nimport { TraceMessage } from \"./types\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { niceBytes, timeFromDate } from \"../../../common/utils\";\nimport { wsProtocol } from \"../../../utils/wsUtils\";\nimport {\n actionsTray,\n containerForHeader,\n hrClass,\n inlineCheckboxes,\n searchField,\n tableStyles,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport TableWrapper from \"../Common/TableWrapper/TableWrapper\";\nimport PageHeader from \"../Common/PageHeader/PageHeader\";\nimport CheckboxWrapper from \"../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\nimport moment from \"moment/moment\";\nimport PageLayout from \"../Common/Layout/PageLayout\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n sizeItem: {\n width: 150,\n },\n timeItem: {\n width: 100,\n },\n startButton: {\n textAlign: \"right\",\n },\n ...actionsTray,\n ...searchField,\n ...hrClass,\n\n ...tableStyles,\n searchField: {\n ...searchField.searchField,\n margin: \"0 5px\",\n \"&:first-of-type\": {\n marginLeft: 0,\n },\n \"&:last-of-type\": {\n marginRight: 0,\n },\n },\n tableWrapper: {\n height: \"calc(100vh - 292px)\",\n },\n inlineCheckboxes: {\n ...inlineCheckboxes.inlineCheckboxes,\n alignItems: \"center\",\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n },\n },\n checkBoxLabel: {\n marginTop: 10,\n fontSize: 16,\n fontWeight: 500,\n },\n formBox: {\n border: \"1px solid #EAEAEA\",\n padding: 15,\n marginBottom: 15,\n },\n midColumnCheckboxes: {\n display: \"flex\",\n },\n separatorBar: {\n fontSize: 16,\n fontWeight: 700,\n paddingTop: 19,\n \"@media (max-width: 900px)\": {\n display: \"none\",\n },\n },\n ...containerForHeader(theme.spacing(4)),\n });\n\ninterface ITrace {\n classes: any;\n traceMessageReceived: typeof traceMessageReceived;\n traceResetMessages: typeof traceResetMessages;\n setTraceStarted: typeof setTraceStarted;\n messages: TraceMessage[];\n namespace: string;\n tenant: string;\n traceStarted: boolean;\n}\n\nvar c: any = null;\n\nconst Trace = ({\n classes,\n traceMessageReceived,\n traceResetMessages,\n setTraceStarted,\n traceStarted,\n messages,\n}: ITrace) => {\n const [statusCode, setStatusCode] = useState(\"\");\n const [method, setMethod] = useState(\"\");\n const [func, setFunc] = useState(\"\");\n const [path, setPath] = useState(\"\");\n const [threshold, setThreshold] = useState(0);\n const [all, setAll] = useState(false);\n const [s3, setS3] = useState(true);\n const [internal, setInternal] = useState(false);\n const [storage, setStorage] = useState(false);\n const [os, setOS] = useState(false);\n const [errors, setErrors] = useState(false);\n\n const startTrace = () => {\n traceResetMessages();\n const url = new URL(window.location.toString());\n const isDev = process.env.NODE_ENV === \"development\";\n const port = isDev ? \"9090\" : url.port;\n\n let calls = `${s3 ? \"s3,\" : \"\"}${internal ? \"internal,\" : \"\"}${\n storage ? \"storage,\" : \"\"\n }${os ? \"os,\" : \"\"}`;\n\n if (all) {\n calls = \"all\";\n }\n\n const wsProt = wsProtocol(url.protocol);\n c = new W3CWebSocket(\n `${wsProt}://${\n url.hostname\n }:${port}/ws/trace?calls=${calls}&threshold=${threshold}&onlyErrors=${\n errors ? \"yes\" : \"no\"\n }&statusCode=${statusCode}&method=${method}&funcname=${func}&path=${path}`\n );\n\n let interval: any | null = null;\n if (c !== null) {\n c.onopen = () => {\n console.log(\"WebSocket Client Connected\");\n setTraceStarted(true);\n c.send(\"ok\");\n interval = setInterval(() => {\n c.send(\"ok\");\n }, 10 * 1000);\n };\n c.onmessage = (message: IMessageEvent) => {\n let m: TraceMessage = JSON.parse(message.data.toString());\n m.ptime = moment(m.time, \"YYYY-MM-DD HH:mm:s.SSSS +0000 UTC\").toDate();\n m.key = Math.random();\n traceMessageReceived(m);\n };\n c.onclose = () => {\n clearInterval(interval);\n console.log(\"connection closed by server\");\n setTraceStarted(false);\n };\n return () => {\n c.close(1000);\n clearInterval(interval);\n console.log(\"closing websockets\");\n setTraceStarted(false);\n };\n }\n };\n\n const stopTrace = () => {\n c.close(1000);\n setTraceStarted(false);\n };\n\n return (\n \n \n \n \n \n {\n setStatusCode(e.target.value);\n }}\n disabled={traceStarted}\n variant=\"standard\"\n />\n {\n setMethod(e.target.value);\n }}\n disabled={traceStarted}\n variant=\"standard\"\n />\n {\n setFunc(e.target.value);\n }}\n variant=\"standard\"\n />\n {\n setPath(e.target.value);\n }}\n variant=\"standard\"\n />\n {\n setThreshold(parseInt(e.target.value));\n }}\n variant=\"standard\"\n />\n \n \n
\n {\n setErrors(item.target.checked);\n }}\n value={\"only_errors\"}\n disabled={traceStarted}\n />\n \n \n {!traceStarted && (\n \n )}\n {traceStarted && (\n \n )}\n \n \n\n \n {\n const timeParse = new Date(time);\n return timeFromDate(timeParse);\n },\n globalClass: classes.timeItem,\n },\n { label: \"Name\", elementKey: \"api\" },\n {\n label: \"Status\",\n elementKey: \"\",\n renderFunction: (fullElement: TraceMessage) =>\n `${fullElement.statusCode} ${fullElement.statusMsg}`,\n renderFullObject: true,\n },\n {\n label: \"Location\",\n elementKey: \"configuration_id\",\n renderFunction: (fullElement: TraceMessage) =>\n `${fullElement.host} ${fullElement.client}`,\n renderFullObject: true,\n },\n {\n label: \"Load Time\",\n elementKey: \"callStats.duration\",\n globalClass: classes.timeItem,\n },\n {\n label: \"Upload\",\n elementKey: \"callStats.rx\",\n renderFunction: niceBytes,\n globalClass: classes.sizeItem,\n },\n {\n label: \"Download\",\n elementKey: \"callStats.tx\",\n renderFunction: niceBytes,\n globalClass: classes.sizeItem,\n },\n ]}\n isLoading={false}\n records={messages}\n entityName=\"Traces\"\n idField=\"api\"\n customEmptyMessage={\n traceStarted\n ? \"No Traced elements received yet\"\n : \"Trace is not started yet\"\n }\n customPaperHeight={classes.tableWrapper}\n autoScrollToBottom\n />\n \n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n messages: state.trace.messages,\n traceStarted: state.trace.traceStarted,\n});\n\nconst connector = connect(mapState, {\n traceMessageReceived: traceMessageReceived,\n traceResetMessages: traceResetMessages,\n setTraceStarted,\n});\n\nexport default connector(withStyles(styles)(Trace));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// Close codes for websockets defined in RFC 6455\nexport const WSCloseNormalClosure = 1000;\nexport const WSCloseCloseGoingAway = 1001;\nexport const WSCloseAbnormalClosure = 1006;\nexport const WSClosePolicyViolation = 1008;\nexport const WSCloseInternalServerErr = 1011;\n\nexport const wsProtocol = (protocol: string): string => {\n let wsProtocol = \"ws\";\n if (protocol === \"https:\") {\n wsProtocol = \"wss\";\n }\n return wsProtocol;\n};\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}"],"names":["withStyles","theme","createStyles","pageContentStyles","classes","className","children","contentSpacer","container","item","xs","mapDispatchToProps","toggleList","connector","connect","state","sidebarOpen","system","operatorMode","managerObjects","objectBrowser","objectManager","objectsToManage","headerContainer","width","minHeight","display","backgroundColor","left","boxShadow","label","justifyContent","alignItems","labelStyle","color","fontSize","fontWeight","marginLeft","marginTop","rightMenu","textAlign","logo","fill","palette","primary","main","middleComponent","actions","direction","sm","md","sx","paddingTop","variant","length","component","onClick","size","c","messages","trace","traceStarted","traceMessageReceived","traceResetMessages","setTraceStarted","sizeItem","timeItem","startButton","actionsTray","searchField","hrClass","tableStyles","margin","marginRight","tableWrapper","height","inlineCheckboxes","flexFlow","checkBoxLabel","formBox","border","padding","marginBottom","midColumnCheckboxes","separatorBar","containerForHeader","spacing","useState","statusCode","setStatusCode","method","setMethod","func","setFunc","path","setPath","threshold","setThreshold","all","setAll","s3","setS3","internal","setInternal","storage","setStorage","os","setOS","errors","setErrors","Fragment","id","InputProps","disableUnderline","value","onChange","e","target","disabled","type","inputProps","min","parseInt","checked","name","url","URL","window","location","toString","port","calls","wsProt","wsProtocol","protocol","W3CWebSocket","hostname","interval","onopen","console","log","send","setInterval","onmessage","message","m","JSON","parse","data","ptime","moment","time","toDate","key","Math","random","onclose","clearInterval","close","tableBlock","itemActions","columns","elementKey","renderFunction","timeParse","Date","timeFromDate","globalClass","fullElement","statusMsg","renderFullObject","host","client","niceBytes","isLoading","records","entityName","idField","customEmptyMessage","customPaperHeight","autoScrollToBottom","WSCloseAbnormalClosure","WSClosePolicyViolation","WSCloseInternalServerErr","naiveFallback","self","Error","module","exports","this","globalThis","Object","defineProperty","prototype","get","configurable","error","__global__","_globalThis","require","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","uri","protocols","forEach","prop","_objectWithoutProperties","source","excluded","i","sourceKeys","keys","indexOf","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","call"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/js/1409.a1f80372.chunk.js","mappings":"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","sources":["screens/Console/Common/Layout/PageLayout.tsx","screens/Console/Common/PageHeader/PageHeader.tsx","screens/Console/Trace/Trace.tsx","utils/wsUtils.ts","../node_modules/es5-ext/global.js","../node_modules/websocket/lib/browser.js","../node_modules/websocket/lib/version.js","../javascript/esm|/Users/dvaldivia/go/src/github.com/minio/console/portal-ui/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../javascript/esm|/Users/dvaldivia/go/src/github.com/minio/console/portal-ui/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"sourcesContent":["import React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { pageContentStyles } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...pageContentStyles,\n });\n\ntype PageLayoutProps = {\n className?: string;\n classes?: any;\n children: any;\n};\n\nconst PageLayout = ({ classes, className = \"\", children }: PageLayoutProps) => {\n return (\n
\n \n \n {children}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(PageLayout);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { connect } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Typography from \"@mui/material/Typography\";\nimport IconButton from \"@mui/material/IconButton\";\nimport { AppState } from \"../../../../store\";\nimport OperatorLogo from \"../../../../icons/OperatorLogo\";\nimport ConsoleLogo from \"../../../../icons/ConsoleLogo\";\nimport { IFileItem } from \"../../ObjectBrowser/reducers\";\nimport { toggleList } from \"../../ObjectBrowser/actions\";\nimport { ObjectManagerIcon } from \"../../../../icons\";\n\ninterface IPageHeader {\n classes: any;\n sidebarOpen?: boolean;\n operatorMode?: boolean;\n label: any;\n actions?: any;\n managerObjects?: IFileItem[];\n toggleList: typeof toggleList;\n middleComponent?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n headerContainer: {\n width: \"100%\",\n minHeight: 79,\n display: \"flex\",\n backgroundColor: \"#fff\",\n left: 0,\n boxShadow: \"rgba(0,0,0,.08) 0 3px 10px\",\n },\n label: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n },\n labelStyle: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 700,\n marginLeft: 34,\n marginTop: 8,\n },\n rightMenu: {\n textAlign: \"right\",\n },\n logo: {\n marginLeft: 34,\n fill: theme.palette.primary.main,\n \"& .min-icon\": {\n width: 120,\n },\n },\n middleComponent: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n });\n\nconst PageHeader = ({\n classes,\n label,\n actions,\n sidebarOpen,\n operatorMode,\n managerObjects,\n toggleList,\n middleComponent,\n}: IPageHeader) => {\n return (\n \n \n {!sidebarOpen && (\n
\n {operatorMode ? : }\n
\n )}\n \n {label}\n \n \n {middleComponent && (\n \n {middleComponent}\n \n )}\n \n {actions && actions}\n {managerObjects && managerObjects.length > 0 && (\n {\n toggleList();\n }}\n size=\"large\"\n >\n \n \n )}\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n sidebarOpen: state.system.sidebarOpen,\n operatorMode: state.system.operatorMode,\n managerObjects: state.objectBrowser.objectManager.objectsToManage,\n});\n\nconst mapDispatchToProps = {\n toggleList,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(PageHeader));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Button, Grid, TextField } from \"@mui/material\";\nimport { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { AppState } from \"../../../store\";\nimport { connect } from \"react-redux\";\nimport {\n setTraceStarted,\n traceMessageReceived,\n traceResetMessages,\n} from \"./actions\";\nimport { TraceMessage } from \"./types\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { niceBytes, timeFromDate } from \"../../../common/utils\";\nimport { wsProtocol } from \"../../../utils/wsUtils\";\nimport {\n actionsTray,\n containerForHeader,\n hrClass,\n inlineCheckboxes,\n searchField,\n tableStyles,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport TableWrapper from \"../Common/TableWrapper/TableWrapper\";\nimport PageHeader from \"../Common/PageHeader/PageHeader\";\nimport CheckboxWrapper from \"../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\nimport moment from \"moment/moment\";\nimport PageLayout from \"../Common/Layout/PageLayout\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n sizeItem: {\n width: 150,\n },\n timeItem: {\n width: 100,\n },\n startButton: {\n textAlign: \"right\",\n },\n ...actionsTray,\n ...searchField,\n ...hrClass,\n\n ...tableStyles,\n searchField: {\n ...searchField.searchField,\n margin: \"0 5px\",\n \"&:first-of-type\": {\n marginLeft: 0,\n },\n \"&:last-of-type\": {\n marginRight: 0,\n },\n },\n tableWrapper: {\n height: \"calc(100vh - 292px)\",\n },\n inlineCheckboxes: {\n ...inlineCheckboxes.inlineCheckboxes,\n alignItems: \"center\",\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n },\n },\n checkBoxLabel: {\n marginTop: 10,\n fontSize: 16,\n fontWeight: 500,\n },\n formBox: {\n border: \"1px solid #EAEAEA\",\n padding: 15,\n marginBottom: 15,\n },\n midColumnCheckboxes: {\n display: \"flex\",\n },\n separatorBar: {\n fontSize: 16,\n fontWeight: 700,\n paddingTop: 19,\n \"@media (max-width: 900px)\": {\n display: \"none\",\n },\n },\n ...containerForHeader(theme.spacing(4)),\n });\n\ninterface ITrace {\n classes: any;\n traceMessageReceived: typeof traceMessageReceived;\n traceResetMessages: typeof traceResetMessages;\n setTraceStarted: typeof setTraceStarted;\n messages: TraceMessage[];\n namespace: string;\n tenant: string;\n traceStarted: boolean;\n}\n\nvar c: any = null;\n\nconst Trace = ({\n classes,\n traceMessageReceived,\n traceResetMessages,\n setTraceStarted,\n traceStarted,\n messages,\n}: ITrace) => {\n const [statusCode, setStatusCode] = useState(\"\");\n const [method, setMethod] = useState(\"\");\n const [func, setFunc] = useState(\"\");\n const [path, setPath] = useState(\"\");\n const [threshold, setThreshold] = useState(0);\n const [all, setAll] = useState(false);\n const [s3, setS3] = useState(true);\n const [internal, setInternal] = useState(false);\n const [storage, setStorage] = useState(false);\n const [os, setOS] = useState(false);\n const [errors, setErrors] = useState(false);\n\n const startTrace = () => {\n traceResetMessages();\n const url = new URL(window.location.toString());\n const isDev = process.env.NODE_ENV === \"development\";\n const port = isDev ? \"9090\" : url.port;\n\n let calls = `${s3 ? \"s3,\" : \"\"}${internal ? \"internal,\" : \"\"}${\n storage ? \"storage,\" : \"\"\n }${os ? \"os,\" : \"\"}`;\n\n if (all) {\n calls = \"all\";\n }\n\n const wsProt = wsProtocol(url.protocol);\n c = new W3CWebSocket(\n `${wsProt}://${\n url.hostname\n }:${port}/ws/trace?calls=${calls}&threshold=${threshold}&onlyErrors=${\n errors ? \"yes\" : \"no\"\n }&statusCode=${statusCode}&method=${method}&funcname=${func}&path=${path}`\n );\n\n let interval: any | null = null;\n if (c !== null) {\n c.onopen = () => {\n console.log(\"WebSocket Client Connected\");\n setTraceStarted(true);\n c.send(\"ok\");\n interval = setInterval(() => {\n c.send(\"ok\");\n }, 10 * 1000);\n };\n c.onmessage = (message: IMessageEvent) => {\n let m: TraceMessage = JSON.parse(message.data.toString());\n m.ptime = moment(m.time, \"YYYY-MM-DD HH:mm:s.SSSS +0000 UTC\").toDate();\n m.key = Math.random();\n traceMessageReceived(m);\n };\n c.onclose = () => {\n clearInterval(interval);\n console.log(\"connection closed by server\");\n setTraceStarted(false);\n };\n return () => {\n c.close(1000);\n clearInterval(interval);\n console.log(\"closing websockets\");\n setTraceStarted(false);\n };\n }\n };\n\n const stopTrace = () => {\n c.close(1000);\n setTraceStarted(false);\n };\n\n return (\n \n \n \n \n \n {\n setStatusCode(e.target.value);\n }}\n disabled={traceStarted}\n variant=\"standard\"\n />\n {\n setMethod(e.target.value);\n }}\n disabled={traceStarted}\n variant=\"standard\"\n />\n {\n setFunc(e.target.value);\n }}\n variant=\"standard\"\n />\n {\n setPath(e.target.value);\n }}\n variant=\"standard\"\n />\n {\n setThreshold(parseInt(e.target.value));\n }}\n variant=\"standard\"\n />\n \n \n
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"1rem 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport { Button, LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport api from \"../../../common/api\";\nimport { Policy } from \"./types\";\nimport { setModalErrorSnackMessage } from \"../../../actions\";\nimport {\n fieldBasic,\n modalStyleUtils,\n spacingUtils,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonContainer: {\n textAlign: \"right\",\n },\n codeMirrorContainer: {\n marginBottom: 20,\n marginTop: 20,\n \"& label\": {\n marginBottom: \".5rem\",\n },\n \"& label + div\": {\n display: \"none\",\n },\n },\n ...spacingUtils,\n ...modalStyleUtils,\n ...fieldBasic,\n });\n\ninterface IAddPolicyProps {\n classes: any;\n open: boolean;\n closeModalAndRefresh: (refresh: boolean) => void;\n policyEdit: Policy;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst AddPolicy = ({\n classes,\n open,\n closeModalAndRefresh,\n policyEdit,\n setModalErrorSnackMessage,\n}: IAddPolicyProps) => {\n const [addLoading, setAddLoading] = useState(false);\n const [policyName, setPolicyName] = useState(\"\");\n const [policyDefinition, setPolicyDefinition] = useState(\"\");\n\n const addRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n api\n .invoke(\"POST\", \"/api/v1/policies\", {\n name: policyName,\n policy: policyDefinition,\n })\n .then((res) => {\n setAddLoading(false);\n\n closeModalAndRefresh(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n setModalErrorSnackMessage(err);\n });\n };\n\n useEffect(() => {\n if (policyEdit) {\n setPolicyName(policyEdit.name);\n setPolicyDefinition(\n policyEdit ? JSON.stringify(JSON.parse(policyEdit.policy), null, 4) : \"\"\n );\n }\n }, [policyEdit]);\n\n const resetForm = () => {\n setPolicyName(\"\");\n setPolicyDefinition(\"\");\n };\n\n const validSave = policyName.trim() !== \"\";\n\n return (\n {\n closeModalAndRefresh(false);\n }}\n title={`${policyEdit ? \"Info\" : \"Create\"} Policy`}\n >\n \n \n );\n};\n\nconst mapDispatchToProps = {\n setModalErrorSnackMessage,\n};\n\nconst connector = connect(null, mapDispatchToProps);\n\nexport default withStyles(styles)(connector(AddPolicy));\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}"],"names":["langHighlight","json","yaml","StreamLanguage","lightTheme","EditorView","backgroundColor","caretColor","borderLeftColor","color","border","borderRight","fontSize","fontWeight","dark","darkTheme","withStyles","theme","createStyles","fieldBasic","inputLabel","value","label","tooltip","mode","classes","onBeforeChange","readOnly","editorHeight","useState","isDarkTheme","setIsDarkTheme","extensionList","className","tooltipContainer","title","placement","item","xs","sx","extensions","editable","basicSetup","height","onChange","v","vu","borderTop","background","display","alignItems","padding","paddingRight","justifyContent","width","marginLeft","onClick","text","icon","variant","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","id","name","type","autoComplete","disabled","multiline","index","error","required","placeholder","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","inputProps","container","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","fullWidth","helperText","inputRebase","size","disableFocusRipple","disableRipple","disableTouchRipple","timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","setModalErrorSnackMessage","connect","state","modalSnackMessage","system","modalSnackBar","modalErrorContainer","marginTop","borderLeftWidth","borderRadius","zIndex","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","cursor","errorTitle","errorLabel","marginRight","messageIcon","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","overflow","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","errorMessage","message","get","messageDetails","Fragment","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","connector","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","snackBarCommon","onClose","modalOpen","children","wideLimit","noContentPadding","titleIcon","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","length","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","IconButton","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent","buttonContainer","textAlign","codeMirrorContainer","marginBottom","spacingUtils","modalStyleUtils","closeModalAndRefresh","policyEdit","addLoading","setAddLoading","policyName","setPolicyName","policyDefinition","setPolicyDefinition","JSON","stringify","parse","policy","validSave","trim","noValidate","onSubmit","e","preventDefault","api","then","res","catch","err","modalFormScrollable","formFieldRow","target","editor","data","modalButtonBar","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","i","F","s","n","done","_e","f","TypeError","normalCompletion","didErr","call","step","next","_e2"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/3152.daa99377.chunk.js b/portal-ui/build/static/js/1666.d4e2b942.chunk.js
similarity index 97%
rename from portal-ui/build/static/js/3152.daa99377.chunk.js
rename to portal-ui/build/static/js/1666.d4e2b942.chunk.js
index f0dada9e6..d3029fde8 100644
--- a/portal-ui/build/static/js/3152.daa99377.chunk.js
+++ b/portal-ui/build/static/js/1666.d4e2b942.chunk.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3152],{23152:function(e,a,n){n.r(a);var t=n(23430),o=n(18489),r=n(50390),s=n(38342),i=n.n(s),l=n(34424),c=n(25594),d=n(66946),u=n(86509),m=n(4285),p=n(72462),x=n(44149),f=n(66964),h=n(76352),g=n(30324),v=n(11387),Z=n(62559),b={setModalErrorSnackMessage:x.zb},j=(0,l.$j)((function(e){var a=e.system;return{distributedSetup:i()(a,"distributedSetup",!1)}}),b);a.default=(0,m.Z)((function(e){return(0,u.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},p.DF),p.ID),p.bK))}))(j((function(e){var a=e.modalOpen,n=e.currentTags,s=e.onCloseAndUpdate,i=e.bucketName,l=e.setModalErrorSnackMessage,u=e.classes,m=(0,r.useState)(""),p=(0,t.Z)(m,2),x=p[0],b=p[1],j=(0,r.useState)(""),C=(0,t.Z)(j,2),N=C[0],y=C[1],k=(0,r.useState)(!1),w=(0,t.Z)(k,2),S=w[0],M=w[1];return(0,Z.jsx)(h.Z,{modalOpen:a,title:"Add New Tag ",onClose:function(){s(!1)},titleIcon:(0,Z.jsx)(v.OC,{}),children:(0,Z.jsxs)(c.ZP,{container:!0,children:[(0,Z.jsxs)("div",{className:u.spacerBottom,children:[(0,Z.jsx)("strong",{children:"Bucket"}),": ",i]}),(0,Z.jsx)(c.ZP,{item:!0,xs:12,className:u.formFieldRow,children:(0,Z.jsx)(f.Z,{value:x,label:"New Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter New Tag Key",onChange:function(e){b(e.target.value)}})}),(0,Z.jsx)(c.ZP,{item:!0,xs:12,className:u.formFieldRow,children:(0,Z.jsx)(f.Z,{value:N,label:"New Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter New Tag Label",onChange:function(e){y(e.target.value)}})}),(0,Z.jsxs)(c.ZP,{item:!0,xs:12,className:u.modalButtonBar,children:[(0,Z.jsx)(d.Z,{type:"button",variant:"outlined",color:"primary",onClick:function(){y(""),b("")},children:"Clear"}),(0,Z.jsx)(d.Z,{type:"submit",variant:"contained",color:"primary",disabled:""===N.trim()||""===x.trim()||S,onClick:function(){M(!0);var e={};e[x]=N;var a=(0,o.Z)((0,o.Z)({},n),e);g.Z.invoke("PUT","/api/v1/buckets/".concat(i,"/tags"),{tags:a}).then((function(e){M(!1),s(!0)})).catch((function(e){l(e),M(!1)}))},children:"Save"})]})]})})})))},66964:function(e,a,n){var t=n(18489),o=n(50390),r=n(12066),s=n(25594),i=n(14602),l=n(94187),c=n(95467),d=n(86509),u=n(62449),m=n(4285),p=n(72462),x=n(97538),f=n(44977),h=n(62559),g=(0,u.Z)((function(e){return(0,d.Z)((0,t.Z)({},p.gM))}));function v(e){var a=g();return(0,h.jsx)(r.Z,(0,t.Z)({InputProps:{classes:a}},e))}a.Z=(0,m.Z)((function(e){return(0,d.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,t.Z)((0,t.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var a=e.label,n=e.onChange,r=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,g=e.autoComplete,Z=void 0===g?"off":g,b=e.disabled,j=void 0!==b&&b,C=e.multiline,N=void 0!==C&&C,y=e.tooltip,k=void 0===y?"":y,w=e.index,S=void 0===w?0:w,M=e.error,E=void 0===M?"":M,L=e.required,B=void 0!==L&&L,T=e.placeholder,I=void 0===T?"":T,D=e.min,P=e.max,F=e.overlayIcon,z=void 0===F?null:F,O=e.overlayObject,W=void 0===O?null:O,R=e.extraInputProps,A=void 0===R?{}:R,K=e.overlayAction,H=e.noLabelMinWidth,$=void 0!==H&&H,U=e.pattern,Y=void 0===U?"":U,_=e.autoFocus,q=void 0!==_&&_,G=e.classes,Q=e.className,X=void 0===Q?"":Q,J=(0,t.Z)({"data-index":S},A);return"number"===p&&D&&(J.min=D),"number"===p&&P&&(J.max=P),""!==Y&&(J.pattern=Y),(0,h.jsx)(o.Fragment,{children:(0,h.jsxs)(s.ZP,{container:!0,className:(0,f.Z)(""!==X?X:"",""!==E?G.errorInField:G.inputBoxContainer),children:[""!==a&&(0,h.jsxs)(i.Z,{htmlFor:d,className:$?G.noMinWidthLabel:G.inputLabel,children:[(0,h.jsxs)("span",{children:[a,B?"*":""]}),""!==k&&(0,h.jsx)("div",{className:G.tooltipContainer,children:(0,h.jsx)(l.Z,{title:k,placement:"top-start",children:(0,h.jsx)("div",{className:G.tooltip,children:(0,h.jsx)(x.Z,{})})})})]}),(0,h.jsxs)("div",{className:G.textBoxContainer,children:[(0,h.jsx)(v,{id:d,name:u,fullWidth:!0,value:r,autoFocus:q,disabled:j,onChange:n,type:p,multiline:N,autoComplete:Z,inputProps:J,error:""!==E,helperText:E,placeholder:I,className:G.inputRebase}),z&&(0,h.jsx)("div",{className:"".concat(G.overlayAction," ").concat(""!==a?"withLabel":""),children:(0,h.jsx)(c.Z,{onClick:K?function(){K()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:z})}),W&&(0,h.jsx)("div",{className:"".concat(G.overlayAction," ").concat(""!==a?"withLabel":""),children:W})]})]})})}))},76352:function(e,a,n){n.d(a,{Z:function(){return S}});var t,o=n(23430),r=n(18489),s=n(50390),i=n(34424),l=n(95467),c=n(97771),d=n(84402),u=n(78426),m=n(93085),p=n(86509),x=n(4285),f=n(72462),h=n(44149),g=n(38342),v=n.n(g),Z=n(92125),b=n(19538),j=n(21278),C=n(62559),N=function(){clearInterval(t)},y={displayErrorMessage:h.zb},k=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),y)((0,x.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var a=e.classes,n=e.modalSnackMessage,r=e.displayErrorMessage,i=e.customStyle,l=(0,s.useState)(!1),c=(0,o.Z)(l,2),d=c[0],u=c[1],m=(0,s.useState)(!1),p=(0,o.Z)(m,2),x=p[0],f=p[1],h=(0,s.useCallback)((function(){f(!1)}),[]);(0,s.useEffect)((function(){x||(r({detailedError:"",errorMessage:""}),u(!1))}),[r,x]),(0,s.useEffect)((function(){""!==n.message&&"error"===n.type&&f(!0)}),[h,n.message,n.type]);var g=v()(n,"message",""),y=v()(n,"detailedErrorMsg","");return"error"!==n.type||""===g?null:(0,C.jsx)(s.Fragment,{children:(0,C.jsxs)("div",{className:"".concat(a.modalErrorContainer," ").concat(x?a.modalErrorShow:""),style:i,onMouseOver:N,onMouseLeave:function(){t=setInterval(h,1e4)},children:[(0,C.jsx)("button",{className:a.closeButton,onClick:h,children:(0,C.jsx)(j.Z,{})}),(0,C.jsxs)("div",{className:a.errorTitle,children:[(0,C.jsx)("span",{className:a.messageIcon,children:(0,C.jsx)(b.Z,{})}),(0,C.jsx)("span",{className:a.errorLabel,children:g})]}),""!==y&&(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)("div",{className:a.detailsContainerLink,children:(0,C.jsxs)("button",{className:a.detailsButton,onClick:function(){u(!d)},children:["Details",(0,C.jsx)(Z.Z,{className:"".concat(a.arrowElement," ").concat(d?a.arrowOpen:"")})]})}),(0,C.jsx)("div",{className:"".concat(a.extraDetailsContainer," ").concat(d?a.extraDetailsOpen:""),children:y})]})]})})}))),w=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:h.MK}),S=(0,x.Z)((function(e){return(0,p.Z)((0,r.Z)((0,r.Z)({},f.Qw),{},{root:{"& .MuiPaper-root":{padding:"1rem 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},f.sN))}))(w((function(e){var a=e.onClose,n=e.modalOpen,t=e.title,i=e.children,p=e.classes,x=e.wideLimit,f=void 0===x||x,h=e.modalSnackMessage,g=e.noContentPadding,v=e.setModalSnackMessage,Z=e.titleIcon,b=void 0===Z?null:Z,N=(0,s.useState)(!1),y=(0,o.Z)(N,2),w=y[0],S=y[1];(0,s.useEffect)((function(){v("")}),[v]),(0,s.useEffect)((function(){if(h){if(""===h.message)return void S(!1);"error"!==h.type&&S(!0)}}),[h]);var M=f?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},E="";return h&&(E=h.detailedErrorMsg,(""===h.detailedErrorMsg||h.detailedErrorMsg.length<5)&&(E=h.message)),(0,C.jsxs)(d.Z,(0,r.Z)((0,r.Z)({open:n,classes:p},M),{},{scroll:"paper",onClose:function(e,n){"backdropClick"!==n&&a()},className:p.root,children:[(0,C.jsxs)(u.Z,{className:p.title,children:[(0,C.jsxs)("div",{className:p.titleText,children:[b," ",t]}),(0,C.jsx)("div",{className:p.closeContainer,children:(0,C.jsx)(l.Z,{"aria-label":"close",className:p.closeButton,onClick:a,disableRipple:!0,size:"small",children:(0,C.jsx)(j.Z,{})})})]}),(0,C.jsx)(k,{}),(0,C.jsx)(c.Z,{open:w,className:p.snackBarModal,onClose:function(){S(!1),v("")},message:E,ContentProps:{className:"".concat(p.snackBar," ").concat(h&&"error"===h.type?p.errorSnackBar:"")},autoHideDuration:h&&"error"===h.type?1e4:5e3}),(0,C.jsx)(m.Z,{className:g?"":p.content,children:i})]}))})))}}]);
-//# sourceMappingURL=3152.daa99377.chunk.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1666],{23152:function(e,a,n){n.r(a);var t=n(23430),o=n(18489),r=n(50390),s=n(38342),i=n.n(s),l=n(34424),c=n(25594),d=n(66946),u=n(86509),m=n(4285),p=n(72462),x=n(44149),f=n(66964),h=n(76352),g=n(30324),v=n(98280),Z=n(62559),b={setModalErrorSnackMessage:x.zb},j=(0,l.$j)((function(e){var a=e.system;return{distributedSetup:i()(a,"distributedSetup",!1)}}),b);a.default=(0,m.Z)((function(e){return(0,u.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},p.DF),p.ID),p.bK))}))(j((function(e){var a=e.modalOpen,n=e.currentTags,s=e.onCloseAndUpdate,i=e.bucketName,l=e.setModalErrorSnackMessage,u=e.classes,m=(0,r.useState)(""),p=(0,t.Z)(m,2),x=p[0],b=p[1],j=(0,r.useState)(""),C=(0,t.Z)(j,2),N=C[0],y=C[1],k=(0,r.useState)(!1),w=(0,t.Z)(k,2),S=w[0],M=w[1];return(0,Z.jsx)(h.Z,{modalOpen:a,title:"Add New Tag ",onClose:function(){s(!1)},titleIcon:(0,Z.jsx)(v.OC,{}),children:(0,Z.jsxs)(c.ZP,{container:!0,children:[(0,Z.jsxs)("div",{className:u.spacerBottom,children:[(0,Z.jsx)("strong",{children:"Bucket"}),": ",i]}),(0,Z.jsx)(c.ZP,{item:!0,xs:12,className:u.formFieldRow,children:(0,Z.jsx)(f.Z,{value:x,label:"New Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter New Tag Key",onChange:function(e){b(e.target.value)}})}),(0,Z.jsx)(c.ZP,{item:!0,xs:12,className:u.formFieldRow,children:(0,Z.jsx)(f.Z,{value:N,label:"New Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter New Tag Label",onChange:function(e){y(e.target.value)}})}),(0,Z.jsxs)(c.ZP,{item:!0,xs:12,className:u.modalButtonBar,children:[(0,Z.jsx)(d.Z,{type:"button",variant:"outlined",color:"primary",onClick:function(){y(""),b("")},children:"Clear"}),(0,Z.jsx)(d.Z,{type:"submit",variant:"contained",color:"primary",disabled:""===N.trim()||""===x.trim()||S,onClick:function(){M(!0);var e={};e[x]=N;var a=(0,o.Z)((0,o.Z)({},n),e);g.Z.invoke("PUT","/api/v1/buckets/".concat(i,"/tags"),{tags:a}).then((function(e){M(!1),s(!0)})).catch((function(e){l(e),M(!1)}))},children:"Save"})]})]})})})))},66964:function(e,a,n){var t=n(18489),o=n(50390),r=n(12066),s=n(25594),i=n(36554),l=n(94187),c=n(95467),d=n(86509),u=n(62449),m=n(4285),p=n(72462),x=n(97538),f=n(44977),h=n(62559),g=(0,u.Z)((function(e){return(0,d.Z)((0,t.Z)({},p.gM))}));function v(e){var a=g();return(0,h.jsx)(r.Z,(0,t.Z)({InputProps:{classes:a}},e))}a.Z=(0,m.Z)((function(e){return(0,d.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,t.Z)((0,t.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var a=e.label,n=e.onChange,r=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,g=e.autoComplete,Z=void 0===g?"off":g,b=e.disabled,j=void 0!==b&&b,C=e.multiline,N=void 0!==C&&C,y=e.tooltip,k=void 0===y?"":y,w=e.index,S=void 0===w?0:w,M=e.error,E=void 0===M?"":M,L=e.required,B=void 0!==L&&L,T=e.placeholder,I=void 0===T?"":T,D=e.min,P=e.max,F=e.overlayIcon,z=void 0===F?null:F,O=e.overlayObject,W=void 0===O?null:O,R=e.extraInputProps,A=void 0===R?{}:R,K=e.overlayAction,H=e.noLabelMinWidth,$=void 0!==H&&H,U=e.pattern,Y=void 0===U?"":U,_=e.autoFocus,q=void 0!==_&&_,G=e.classes,Q=e.className,X=void 0===Q?"":Q,J=(0,t.Z)({"data-index":S},A);return"number"===p&&D&&(J.min=D),"number"===p&&P&&(J.max=P),""!==Y&&(J.pattern=Y),(0,h.jsx)(o.Fragment,{children:(0,h.jsxs)(s.ZP,{container:!0,className:(0,f.Z)(""!==X?X:"",""!==E?G.errorInField:G.inputBoxContainer),children:[""!==a&&(0,h.jsxs)(i.Z,{htmlFor:d,className:$?G.noMinWidthLabel:G.inputLabel,children:[(0,h.jsxs)("span",{children:[a,B?"*":""]}),""!==k&&(0,h.jsx)("div",{className:G.tooltipContainer,children:(0,h.jsx)(l.Z,{title:k,placement:"top-start",children:(0,h.jsx)("div",{className:G.tooltip,children:(0,h.jsx)(x.Z,{})})})})]}),(0,h.jsxs)("div",{className:G.textBoxContainer,children:[(0,h.jsx)(v,{id:d,name:u,fullWidth:!0,value:r,autoFocus:q,disabled:j,onChange:n,type:p,multiline:N,autoComplete:Z,inputProps:J,error:""!==E,helperText:E,placeholder:I,className:G.inputRebase}),z&&(0,h.jsx)("div",{className:"".concat(G.overlayAction," ").concat(""!==a?"withLabel":""),children:(0,h.jsx)(c.Z,{onClick:K?function(){K()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:z})}),W&&(0,h.jsx)("div",{className:"".concat(G.overlayAction," ").concat(""!==a?"withLabel":""),children:W})]})]})})}))},76352:function(e,a,n){n.d(a,{Z:function(){return S}});var t,o=n(23430),r=n(18489),s=n(50390),i=n(34424),l=n(95467),c=n(97771),d=n(84402),u=n(78426),m=n(93085),p=n(86509),x=n(4285),f=n(72462),h=n(44149),g=n(38342),v=n.n(g),Z=n(92125),b=n(19538),j=n(21278),C=n(62559),N=function(){clearInterval(t)},y={displayErrorMessage:h.zb},k=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),y)((0,x.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var a=e.classes,n=e.modalSnackMessage,r=e.displayErrorMessage,i=e.customStyle,l=(0,s.useState)(!1),c=(0,o.Z)(l,2),d=c[0],u=c[1],m=(0,s.useState)(!1),p=(0,o.Z)(m,2),x=p[0],f=p[1],h=(0,s.useCallback)((function(){f(!1)}),[]);(0,s.useEffect)((function(){x||(r({detailedError:"",errorMessage:""}),u(!1))}),[r,x]),(0,s.useEffect)((function(){""!==n.message&&"error"===n.type&&f(!0)}),[h,n.message,n.type]);var g=v()(n,"message",""),y=v()(n,"detailedErrorMsg","");return"error"!==n.type||""===g?null:(0,C.jsx)(s.Fragment,{children:(0,C.jsxs)("div",{className:"".concat(a.modalErrorContainer," ").concat(x?a.modalErrorShow:""),style:i,onMouseOver:N,onMouseLeave:function(){t=setInterval(h,1e4)},children:[(0,C.jsx)("button",{className:a.closeButton,onClick:h,children:(0,C.jsx)(j.Z,{})}),(0,C.jsxs)("div",{className:a.errorTitle,children:[(0,C.jsx)("span",{className:a.messageIcon,children:(0,C.jsx)(b.Z,{})}),(0,C.jsx)("span",{className:a.errorLabel,children:g})]}),""!==y&&(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)("div",{className:a.detailsContainerLink,children:(0,C.jsxs)("button",{className:a.detailsButton,onClick:function(){u(!d)},children:["Details",(0,C.jsx)(Z.Z,{className:"".concat(a.arrowElement," ").concat(d?a.arrowOpen:"")})]})}),(0,C.jsx)("div",{className:"".concat(a.extraDetailsContainer," ").concat(d?a.extraDetailsOpen:""),children:y})]})]})})}))),w=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:h.MK}),S=(0,x.Z)((function(e){return(0,p.Z)((0,r.Z)((0,r.Z)({},f.Qw),{},{root:{"& .MuiPaper-root":{padding:"1rem 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},f.sN))}))(w((function(e){var a=e.onClose,n=e.modalOpen,t=e.title,i=e.children,p=e.classes,x=e.wideLimit,f=void 0===x||x,h=e.modalSnackMessage,g=e.noContentPadding,v=e.setModalSnackMessage,Z=e.titleIcon,b=void 0===Z?null:Z,N=(0,s.useState)(!1),y=(0,o.Z)(N,2),w=y[0],S=y[1];(0,s.useEffect)((function(){v("")}),[v]),(0,s.useEffect)((function(){if(h){if(""===h.message)return void S(!1);"error"!==h.type&&S(!0)}}),[h]);var M=f?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},E="";return h&&(E=h.detailedErrorMsg,(""===h.detailedErrorMsg||h.detailedErrorMsg.length<5)&&(E=h.message)),(0,C.jsxs)(d.Z,(0,r.Z)((0,r.Z)({open:n,classes:p},M),{},{scroll:"paper",onClose:function(e,n){"backdropClick"!==n&&a()},className:p.root,children:[(0,C.jsxs)(u.Z,{className:p.title,children:[(0,C.jsxs)("div",{className:p.titleText,children:[b," ",t]}),(0,C.jsx)("div",{className:p.closeContainer,children:(0,C.jsx)(l.Z,{"aria-label":"close",className:p.closeButton,onClick:a,disableRipple:!0,size:"small",children:(0,C.jsx)(j.Z,{})})})]}),(0,C.jsx)(k,{}),(0,C.jsx)(c.Z,{open:w,className:p.snackBarModal,onClose:function(){S(!1),v("")},message:E,ContentProps:{className:"".concat(p.snackBar," ").concat(h&&"error"===h.type?p.errorSnackBar:"")},autoHideDuration:h&&"error"===h.type?1e4:5e3}),(0,C.jsx)(m.Z,{className:g?"":p.content,children:i})]}))})))}}]);
+//# sourceMappingURL=1666.d4e2b942.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/3152.daa99377.chunk.js.map b/portal-ui/build/static/js/1666.d4e2b942.chunk.js.map
similarity index 99%
rename from portal-ui/build/static/js/3152.daa99377.chunk.js.map
rename to portal-ui/build/static/js/1666.d4e2b942.chunk.js.map
index 738ea515c..610cd431a 100644
--- a/portal-ui/build/static/js/3152.daa99377.chunk.js.map
+++ b/portal-ui/build/static/js/1666.d4e2b942.chunk.js.map
@@ -1 +1 @@
-{"version":3,"file":"static/js/3152.daa99377.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddBucketTagModal.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { connect } from \"react-redux\";\nimport { Button, Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport { AppState } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../common/api\";\nimport { AddNewTagIcon } from \"../../../../icons\";\n\ninterface IBucketTagModal {\n modalOpen: boolean;\n currentTags: any;\n bucketName: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\nconst AddBucketTagModal = ({\n modalOpen,\n currentTags,\n onCloseAndUpdate,\n bucketName,\n setModalErrorSnackMessage,\n classes,\n}: IBucketTagModal) => {\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n api\n .invoke(\"PUT\", `/api/v1/buckets/${bucketName}/tags`, {\n tags: newTagList,\n })\n .then((res: any) => {\n setIsSending(false);\n onCloseAndUpdate(true);\n })\n .catch((error: ErrorResponseHandler) => {\n setModalErrorSnackMessage(error);\n setIsSending(false);\n });\n };\n\n return (\n {\n onCloseAndUpdate(false);\n }}\n titleIcon={}\n >\n \n
\n Bucket: {bucketName}\n
\n \n {\n setNewKey(e.target.value);\n }}\n />\n \n \n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n );\n};\n\nconst mapStateToProps = ({ system }: AppState) => ({\n distributedSetup: get(system, \"distributedSetup\", false),\n});\n\nconst mapDispatchToProps = {\n setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default withStyles(styles)(connector(AddBucketTagModal));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n })\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"1rem 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n"],"names":["mapDispatchToProps","setModalErrorSnackMessage","connector","connect","system","distributedSetup","get","withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","spacingUtils","modalOpen","currentTags","onCloseAndUpdate","bucketName","classes","useState","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","title","onClose","titleIcon","container","className","spacerBottom","item","xs","formFieldRow","value","label","id","name","placeholder","onChange","e","target","modalButtonBar","type","variant","color","onClick","disabled","trim","newTag","newTagList","api","tags","then","res","catch","error","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","inputLabel","fontWeight","autoComplete","multiline","tooltip","index","required","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","inputProps","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","tooltipContainer","placement","fullWidth","helperText","inputRebase","size","disableFocusRipple","disableRipple","disableTouchRipple","timerI","stopHideTimer","clearInterval","displayErrorMessage","state","modalSnackMessage","modalSnackBar","modalErrorContainer","marginTop","width","backgroundColor","border","borderLeftWidth","borderRadius","zIndex","padding","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","fontSize","cursor","errorTitle","display","alignItems","errorLabel","marginLeft","marginRight","messageIcon","height","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","overflow","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","errorMessage","message","messageDetails","Fragment","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","length","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","IconButton","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/js/1666.d4e2b942.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddBucketTagModal.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { connect } from \"react-redux\";\nimport { Button, Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport { AppState } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../common/api\";\nimport { AddNewTagIcon } from \"../../../../icons\";\n\ninterface IBucketTagModal {\n modalOpen: boolean;\n currentTags: any;\n bucketName: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\nconst AddBucketTagModal = ({\n modalOpen,\n currentTags,\n onCloseAndUpdate,\n bucketName,\n setModalErrorSnackMessage,\n classes,\n}: IBucketTagModal) => {\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n api\n .invoke(\"PUT\", `/api/v1/buckets/${bucketName}/tags`, {\n tags: newTagList,\n })\n .then((res: any) => {\n setIsSending(false);\n onCloseAndUpdate(true);\n })\n .catch((error: ErrorResponseHandler) => {\n setModalErrorSnackMessage(error);\n setIsSending(false);\n });\n };\n\n return (\n {\n onCloseAndUpdate(false);\n }}\n titleIcon={}\n >\n \n
\n Bucket: {bucketName}\n
\n \n {\n setNewKey(e.target.value);\n }}\n />\n \n \n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n );\n};\n\nconst mapStateToProps = ({ system }: AppState) => ({\n distributedSetup: get(system, \"distributedSetup\", false),\n});\n\nconst mapDispatchToProps = {\n setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default withStyles(styles)(connector(AddBucketTagModal));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n })\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"1rem 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n"],"names":["mapDispatchToProps","setModalErrorSnackMessage","connector","connect","system","distributedSetup","get","withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","spacingUtils","modalOpen","currentTags","onCloseAndUpdate","bucketName","classes","useState","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","title","onClose","titleIcon","container","className","spacerBottom","item","xs","formFieldRow","value","label","id","name","placeholder","onChange","e","target","modalButtonBar","type","variant","color","onClick","disabled","trim","newTag","newTagList","api","tags","then","res","catch","error","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","inputLabel","fontWeight","autoComplete","multiline","tooltip","index","required","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","inputProps","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","tooltipContainer","placement","fullWidth","helperText","inputRebase","size","disableFocusRipple","disableRipple","disableTouchRipple","timerI","stopHideTimer","clearInterval","displayErrorMessage","state","modalSnackMessage","modalSnackBar","modalErrorContainer","marginTop","width","backgroundColor","border","borderLeftWidth","borderRadius","zIndex","padding","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","fontSize","cursor","errorTitle","display","alignItems","errorLabel","marginLeft","marginRight","messageIcon","height","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","overflow","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","errorMessage","message","messageDetails","Fragment","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","length","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","IconButton","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1711.a046e26c.chunk.js b/portal-ui/build/static/js/1711.669b8be7.chunk.js
similarity index 97%
rename from portal-ui/build/static/js/1711.a046e26c.chunk.js
rename to portal-ui/build/static/js/1711.669b8be7.chunk.js
index 0b2cd432e..80297da8c 100644
--- a/portal-ui/build/static/js/1711.a046e26c.chunk.js
+++ b/portal-ui/build/static/js/1711.669b8be7.chunk.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1711],{31711:function(e,n,a){a.r(n);var t=a(23430),o=a(18489),i=a(50390),r=a(34424),l=a(66946),s=a(81378),c=a(86509),d=a(4285),u=a(25594),m=a(28948),p=a(44149),h=a(72462),x=a(92440),f=a(27207),Z=a(66964),b=a(76352),g=a(67754),v=a(30324),j=a(11387),C=a(62559),k=(0,r.$j)(null,{setModalErrorSnackMessage:p.zb});n.default=(0,d.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({},h.DF),h.ID))}))(k((function(e){var n=e.classes,a=e.open,o=e.enabled,r=e.cfg,c=e.selectedBucket,d=e.closeModalAndRefresh,p=e.setModalErrorSnackMessage,h=(0,i.useState)(!1),k=(0,t.Z)(h,2),N=k[0],y=k[1],S=(0,i.useState)(!1),w=(0,t.Z)(S,2),L=w[0],F=w[1],M=(0,i.useState)("hard"),P=(0,t.Z)(M,2),E=P[0],I=P[1],B=(0,i.useState)("1"),O=(0,t.Z)(B,2),R=O[0],q=O[1],D=(0,i.useState)("TiB"),z=(0,t.Z)(D,2),W=z[0],T=z[1];(0,i.useEffect)((function(){if(o&&(F(!0),r)){I(r.type),q("".concat(r.quota)),T("B");for(var e="B",n=r.quota,a=0;a1?L[1]:"OFF"}),(0,f.jsx)(Z,{checked:b,onChange:o,color:"primary",name:s,inputProps:{"aria-label":"primary checkbox"},disabled:v,disableRipple:!0,disableFocusRipple:!0,disableTouchRipple:!0,value:r}),!C&&(0,f.jsx)("span",{className:(0,x.Z)(w.indicatorLabel,(0,t.Z)({},w.indicatorLabelOn,b)),children:L?L[0]:"ON"})]});return C?F:(0,f.jsx)("div",{className:w.divContainer,children:(0,f.jsxs)(m.ZP,{container:!0,alignItems:"center",children:[(0,f.jsx)(m.ZP,{item:!0,xs:!0,children:(0,f.jsxs)(m.ZP,{container:!0,children:[(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:4,md:3,children:""!==a&&(0,f.jsxs)(c.Z,{htmlFor:l,className:w.inputLabel,children:[(0,f.jsx)("span",{children:a}),""!==N&&(0,f.jsx)("div",{className:w.tooltipContainer,children:(0,f.jsx)(d.Z,{title:N,placement:"top-start",children:(0,f.jsx)("div",{className:w.tooltip,children:(0,f.jsx)(h.Z,{})})})})]})}),(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:!0,textAlign:"left",children:""!==S&&(0,f.jsx)(u.Z,{component:"p",className:w.fieldDescription,children:S})})]})}),(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:2,textAlign:"right",className:w.switchContainer,children:F})]})})}))},66964:function(e,n,a){var t=a(18489),o=a(50390),i=a(12066),r=a(25594),l=a(14602),s=a(94187),c=a(95467),d=a(86509),u=a(62449),m=a(4285),p=a(72462),h=a(97538),x=a(44977),f=a(62559),Z=(0,u.Z)((function(e){return(0,d.Z)((0,t.Z)({},p.gM))}));function b(e){var n=Z();return(0,f.jsx)(i.Z,(0,t.Z)({InputProps:{classes:n}},e))}n.Z=(0,m.Z)((function(e){return(0,d.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,t.Z)((0,t.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var n=e.label,a=e.onChange,i=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,Z=e.autoComplete,g=void 0===Z?"off":Z,v=e.disabled,j=void 0!==v&&v,C=e.multiline,k=void 0!==C&&C,N=e.tooltip,y=void 0===N?"":N,S=e.index,w=void 0===S?0:S,L=e.error,F=void 0===L?"":L,M=e.required,P=void 0!==M&&M,E=e.placeholder,I=void 0===E?"":E,B=e.min,O=e.max,R=e.overlayIcon,q=void 0===R?null:R,D=e.overlayObject,z=void 0===D?null:D,W=e.extraInputProps,T=void 0===W?{}:W,_=e.overlayAction,A=e.noLabelMinWidth,H=void 0!==A&&A,$=e.pattern,Y=void 0===$?"":$,Q=e.autoFocus,U=void 0!==Q&&Q,V=e.classes,K=e.className,X=void 0===K?"":K,G=(0,t.Z)({"data-index":w},T);return"number"===p&&B&&(G.min=B),"number"===p&&O&&(G.max=O),""!==Y&&(G.pattern=Y),(0,f.jsx)(o.Fragment,{children:(0,f.jsxs)(r.ZP,{container:!0,className:(0,x.Z)(""!==X?X:"",""!==F?V.errorInField:V.inputBoxContainer),children:[""!==n&&(0,f.jsxs)(l.Z,{htmlFor:d,className:H?V.noMinWidthLabel:V.inputLabel,children:[(0,f.jsxs)("span",{children:[n,P?"*":""]}),""!==y&&(0,f.jsx)("div",{className:V.tooltipContainer,children:(0,f.jsx)(s.Z,{title:y,placement:"top-start",children:(0,f.jsx)("div",{className:V.tooltip,children:(0,f.jsx)(h.Z,{})})})})]}),(0,f.jsxs)("div",{className:V.textBoxContainer,children:[(0,f.jsx)(b,{id:d,name:u,fullWidth:!0,value:i,autoFocus:U,disabled:j,onChange:a,type:p,multiline:k,autoComplete:g,inputProps:G,error:""!==F,helperText:F,placeholder:I,className:V.inputRebase}),q&&(0,f.jsx)("div",{className:"".concat(V.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,f.jsx)(c.Z,{onClick:_?function(){_()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:q})}),z&&(0,f.jsx)("div",{className:"".concat(V.overlayAction," ").concat(""!==n?"withLabel":""),children:z})]})]})})}))},27207:function(e,n,a){var t=a(36222),o=a(18489),i=(a(50390),a(44977)),r=a(25594),l=a(82420),s=a(66695),c=a(98893),d=a(14602),u=a(94187),m=a(86509),p=a(4285),h=a(62449),x=a(72462),f=a(97538),Z=a(62559),b=(0,h.Z)((0,o.Z)({root:{"&:hover":{backgroundColor:"transparent"}}},x.FU)),g=function(e){var n=b();return(0,Z.jsx)(c.Z,(0,o.Z)({className:n.root,disableRipple:!0,color:"default",checkedIcon:(0,Z.jsx)("span",{className:n.radioSelectedIcon}),icon:(0,Z.jsx)("span",{className:n.radioUnselectedIcon})},e))};n.Z=(0,p.Z)((function(e){return(0,m.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},x.YI),x.Hr),{},{optionLabel:{"&.Mui-disabled":{"& .MuiFormControlLabel-label":{color:"#9c9c9c"}},"&:last-child":{marginRight:0},"& .MuiFormControlLabel-label":{fontSize:12,color:"#07193E"}},checkedOption:{"& .MuiFormControlLabel-label":{fontSize:12,color:"#07193E",fontWeight:700}}}))}))((function(e){var n=e.selectorOptions,a=void 0===n?[]:n,o=e.currentSelection,c=e.label,m=e.id,p=e.name,h=e.onChange,x=e.tooltip,b=void 0===x?"":x,v=e.disableOptions,j=void 0!==v&&v,C=e.classes,k=e.displayInColumn,N=void 0!==k&&k;return(0,Z.jsxs)(r.ZP,{container:!0,alignItems:"center",children:[(0,Z.jsx)(r.ZP,{item:!0,xs:!0,children:(0,Z.jsxs)(d.Z,{htmlFor:m,className:C.inputLabel,children:[(0,Z.jsx)("span",{children:c}),""!==b&&(0,Z.jsx)("div",{className:C.tooltipContainer,children:(0,Z.jsx)(u.Z,{title:b,placement:"top-start",children:(0,Z.jsx)("div",{children:(0,Z.jsx)(f.Z,{})})})})]})}),(0,Z.jsx)(r.ZP,{item:!0,xs:!0,className:C.radioOptionsLayout,children:(0,Z.jsx)(l.Z,{"aria-label":m,id:m,name:p,value:o,onChange:h,row:!N,style:{display:"block",textAlign:"right"},children:a.map((function(e){return(0,Z.jsx)(s.Z,{value:e.value,control:(0,Z.jsx)(g,{}),label:e.label,disabled:j,className:(0,i.Z)(C.optionLabel,(0,t.Z)({},C.checkedOption,e.value===o))},"rd-".concat(p,"-").concat(e.value))}))})})]})}))},67754:function(e,n,a){var t=a(18489),o=a(50390),i=a(25594),r=a(46413),l=a(14602),s=a(94187),c=a(47554),d=a(43965),u=a(31680),m=a(86509),p=a(4285),h=a(72462),x=a(97538),f=a(62559),Z=(0,p.Z)((function(e){return(0,m.Z)({root:{height:38,lineHeight:1,"label + &":{marginTop:e.spacing(3)}},input:{height:38,position:"relative",color:"#07193E",fontSize:13,fontWeight:600,padding:"8px 20px 10px 10px",border:"#e5e5e5 1px solid",borderRadius:4,display:"flex",alignItems:"center","&:hover":{borderColor:"#393939"},"&:focus":{backgroundColor:"#fff"}}})}))(r.ZP);n.Z=(0,p.Z)((function(e){return(0,m.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},h.YI),h.Hr),{},{inputLabel:(0,t.Z)((0,t.Z)({},h.YI.inputLabel),{},{"& span":{fontWeight:"normal"}}),fieldContainer:{display:"flex","@media (max-width: 600px)":{flexFlow:"column"}}}))}))((function(e){var n=e.classes,a=e.id,t=e.name,r=e.onChange,m=e.options,p=e.label,h=e.tooltip,b=void 0===h?"":h,g=e.value,v=e.disabled,j=void 0!==v&&v;return(0,f.jsx)(o.Fragment,{children:(0,f.jsxs)(i.ZP,{item:!0,xs:12,className:n.fieldContainer,children:[""!==p&&(0,f.jsxs)(l.Z,{htmlFor:a,className:n.inputLabel,children:[(0,f.jsx)("span",{children:p}),""!==b&&(0,f.jsx)("div",{className:n.tooltipContainer,children:(0,f.jsx)(s.Z,{title:b,placement:"top-start",children:(0,f.jsx)("div",{className:n.tooltip,children:(0,f.jsx)(x.Z,{})})})})]}),(0,f.jsx)(c.Z,{fullWidth:!0,children:(0,f.jsx)(d.Z,{id:a,name:t,value:g,onChange:r,input:(0,f.jsx)(Z,{}),disabled:j,children:m.map((function(e){return(0,f.jsx)(u.Z,{value:e.value,children:e.label},"select-".concat(t,"-").concat(e.label))}))})})]})})}))},76352:function(e,n,a){a.d(n,{Z:function(){return w}});var t,o=a(23430),i=a(18489),r=a(50390),l=a(34424),s=a(95467),c=a(97771),d=a(84402),u=a(78426),m=a(93085),p=a(86509),h=a(4285),x=a(72462),f=a(44149),Z=a(38342),b=a.n(Z),g=a(92125),v=a(19538),j=a(21278),C=a(62559),k=function(){clearInterval(t)},N={displayErrorMessage:f.zb},y=(0,l.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),N)((0,h.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var n=e.classes,a=e.modalSnackMessage,i=e.displayErrorMessage,l=e.customStyle,s=(0,r.useState)(!1),c=(0,o.Z)(s,2),d=c[0],u=c[1],m=(0,r.useState)(!1),p=(0,o.Z)(m,2),h=p[0],x=p[1],f=(0,r.useCallback)((function(){x(!1)}),[]);(0,r.useEffect)((function(){h||(i({detailedError:"",errorMessage:""}),u(!1))}),[i,h]),(0,r.useEffect)((function(){""!==a.message&&"error"===a.type&&x(!0)}),[f,a.message,a.type]);var Z=b()(a,"message",""),N=b()(a,"detailedErrorMsg","");return"error"!==a.type||""===Z?null:(0,C.jsx)(r.Fragment,{children:(0,C.jsxs)("div",{className:"".concat(n.modalErrorContainer," ").concat(h?n.modalErrorShow:""),style:l,onMouseOver:k,onMouseLeave:function(){t=setInterval(f,1e4)},children:[(0,C.jsx)("button",{className:n.closeButton,onClick:f,children:(0,C.jsx)(j.Z,{})}),(0,C.jsxs)("div",{className:n.errorTitle,children:[(0,C.jsx)("span",{className:n.messageIcon,children:(0,C.jsx)(v.Z,{})}),(0,C.jsx)("span",{className:n.errorLabel,children:Z})]}),""!==N&&(0,C.jsxs)(r.Fragment,{children:[(0,C.jsx)("div",{className:n.detailsContainerLink,children:(0,C.jsxs)("button",{className:n.detailsButton,onClick:function(){u(!d)},children:["Details",(0,C.jsx)(g.Z,{className:"".concat(n.arrowElement," ").concat(d?n.arrowOpen:"")})]})}),(0,C.jsx)("div",{className:"".concat(n.extraDetailsContainer," ").concat(d?n.extraDetailsOpen:""),children:N})]})]})})}))),S=(0,l.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:f.MK}),w=(0,h.Z)((function(e){return(0,p.Z)((0,i.Z)((0,i.Z)({},x.Qw),{},{root:{"& .MuiPaper-root":{padding:"1rem 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},x.sN))}))(S((function(e){var n=e.onClose,a=e.modalOpen,t=e.title,l=e.children,p=e.classes,h=e.wideLimit,x=void 0===h||h,f=e.modalSnackMessage,Z=e.noContentPadding,b=e.setModalSnackMessage,g=e.titleIcon,v=void 0===g?null:g,k=(0,r.useState)(!1),N=(0,o.Z)(k,2),S=N[0],w=N[1];(0,r.useEffect)((function(){b("")}),[b]),(0,r.useEffect)((function(){if(f){if(""===f.message)return void w(!1);"error"!==f.type&&w(!0)}}),[f]);var L=x?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},F="";return f&&(F=f.detailedErrorMsg,(""===f.detailedErrorMsg||f.detailedErrorMsg.length<5)&&(F=f.message)),(0,C.jsxs)(d.Z,(0,i.Z)((0,i.Z)({open:a,classes:p},L),{},{scroll:"paper",onClose:function(e,a){"backdropClick"!==a&&n()},className:p.root,children:[(0,C.jsxs)(u.Z,{className:p.title,children:[(0,C.jsxs)("div",{className:p.titleText,children:[v," ",t]}),(0,C.jsx)("div",{className:p.closeContainer,children:(0,C.jsx)(s.Z,{"aria-label":"close",className:p.closeButton,onClick:n,disableRipple:!0,size:"small",children:(0,C.jsx)(j.Z,{})})})]}),(0,C.jsx)(y,{}),(0,C.jsx)(c.Z,{open:S,className:p.snackBarModal,onClose:function(){w(!1),b("")},message:F,ContentProps:{className:"".concat(p.snackBar," ").concat(f&&"error"===f.type?p.errorSnackBar:"")},autoHideDuration:f&&"error"===f.type?1e4:5e3}),(0,C.jsx)(m.Z,{className:Z?"":p.content,children:l})]}))})))}}]);
-//# sourceMappingURL=1711.a046e26c.chunk.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1711],{31711:function(e,n,a){a.r(n);var t=a(23430),o=a(18489),i=a(50390),r=a(34424),l=a(66946),s=a(81378),c=a(86509),d=a(4285),u=a(25594),m=a(28948),p=a(44149),h=a(72462),x=a(92440),f=a(27207),Z=a(66964),b=a(76352),g=a(67754),v=a(30324),j=a(98280),C=a(62559),k=(0,r.$j)(null,{setModalErrorSnackMessage:p.zb});n.default=(0,d.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({},h.DF),h.ID))}))(k((function(e){var n=e.classes,a=e.open,o=e.enabled,r=e.cfg,c=e.selectedBucket,d=e.closeModalAndRefresh,p=e.setModalErrorSnackMessage,h=(0,i.useState)(!1),k=(0,t.Z)(h,2),N=k[0],y=k[1],S=(0,i.useState)(!1),w=(0,t.Z)(S,2),L=w[0],F=w[1],M=(0,i.useState)("hard"),P=(0,t.Z)(M,2),E=P[0],I=P[1],B=(0,i.useState)("1"),O=(0,t.Z)(B,2),R=O[0],q=O[1],D=(0,i.useState)("TiB"),z=(0,t.Z)(D,2),W=z[0],T=z[1];(0,i.useEffect)((function(){if(o&&(F(!0),r)){I(r.type),q("".concat(r.quota)),T("B");for(var e="B",n=r.quota,a=0;a1?L[1]:"OFF"}),(0,f.jsx)(Z,{checked:b,onChange:o,color:"primary",name:s,inputProps:{"aria-label":"primary checkbox"},disabled:v,disableRipple:!0,disableFocusRipple:!0,disableTouchRipple:!0,value:r}),!C&&(0,f.jsx)("span",{className:(0,x.Z)(w.indicatorLabel,(0,t.Z)({},w.indicatorLabelOn,b)),children:L?L[0]:"ON"})]});return C?F:(0,f.jsx)("div",{className:w.divContainer,children:(0,f.jsxs)(m.ZP,{container:!0,alignItems:"center",children:[(0,f.jsx)(m.ZP,{item:!0,xs:!0,children:(0,f.jsxs)(m.ZP,{container:!0,children:[(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:4,md:3,children:""!==a&&(0,f.jsxs)(c.Z,{htmlFor:l,className:w.inputLabel,children:[(0,f.jsx)("span",{children:a}),""!==N&&(0,f.jsx)("div",{className:w.tooltipContainer,children:(0,f.jsx)(d.Z,{title:N,placement:"top-start",children:(0,f.jsx)("div",{className:w.tooltip,children:(0,f.jsx)(h.Z,{})})})})]})}),(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:!0,textAlign:"left",children:""!==S&&(0,f.jsx)(u.Z,{component:"p",className:w.fieldDescription,children:S})})]})}),(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:2,textAlign:"right",className:w.switchContainer,children:F})]})})}))},66964:function(e,n,a){var t=a(18489),o=a(50390),i=a(12066),r=a(25594),l=a(36554),s=a(94187),c=a(95467),d=a(86509),u=a(62449),m=a(4285),p=a(72462),h=a(97538),x=a(44977),f=a(62559),Z=(0,u.Z)((function(e){return(0,d.Z)((0,t.Z)({},p.gM))}));function b(e){var n=Z();return(0,f.jsx)(i.Z,(0,t.Z)({InputProps:{classes:n}},e))}n.Z=(0,m.Z)((function(e){return(0,d.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,t.Z)((0,t.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var n=e.label,a=e.onChange,i=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,Z=e.autoComplete,g=void 0===Z?"off":Z,v=e.disabled,j=void 0!==v&&v,C=e.multiline,k=void 0!==C&&C,N=e.tooltip,y=void 0===N?"":N,S=e.index,w=void 0===S?0:S,L=e.error,F=void 0===L?"":L,M=e.required,P=void 0!==M&&M,E=e.placeholder,I=void 0===E?"":E,B=e.min,O=e.max,R=e.overlayIcon,q=void 0===R?null:R,D=e.overlayObject,z=void 0===D?null:D,W=e.extraInputProps,T=void 0===W?{}:W,_=e.overlayAction,A=e.noLabelMinWidth,H=void 0!==A&&A,$=e.pattern,Y=void 0===$?"":$,Q=e.autoFocus,U=void 0!==Q&&Q,V=e.classes,K=e.className,X=void 0===K?"":K,G=(0,t.Z)({"data-index":w},T);return"number"===p&&B&&(G.min=B),"number"===p&&O&&(G.max=O),""!==Y&&(G.pattern=Y),(0,f.jsx)(o.Fragment,{children:(0,f.jsxs)(r.ZP,{container:!0,className:(0,x.Z)(""!==X?X:"",""!==F?V.errorInField:V.inputBoxContainer),children:[""!==n&&(0,f.jsxs)(l.Z,{htmlFor:d,className:H?V.noMinWidthLabel:V.inputLabel,children:[(0,f.jsxs)("span",{children:[n,P?"*":""]}),""!==y&&(0,f.jsx)("div",{className:V.tooltipContainer,children:(0,f.jsx)(s.Z,{title:y,placement:"top-start",children:(0,f.jsx)("div",{className:V.tooltip,children:(0,f.jsx)(h.Z,{})})})})]}),(0,f.jsxs)("div",{className:V.textBoxContainer,children:[(0,f.jsx)(b,{id:d,name:u,fullWidth:!0,value:i,autoFocus:U,disabled:j,onChange:a,type:p,multiline:k,autoComplete:g,inputProps:G,error:""!==F,helperText:F,placeholder:I,className:V.inputRebase}),q&&(0,f.jsx)("div",{className:"".concat(V.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,f.jsx)(c.Z,{onClick:_?function(){_()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:q})}),z&&(0,f.jsx)("div",{className:"".concat(V.overlayAction," ").concat(""!==n?"withLabel":""),children:z})]})]})})}))},27207:function(e,n,a){var t=a(36222),o=a(18489),i=(a(50390),a(44977)),r=a(25594),l=a(82420),s=a(66695),c=a(98893),d=a(36554),u=a(94187),m=a(86509),p=a(4285),h=a(62449),x=a(72462),f=a(97538),Z=a(62559),b=(0,h.Z)((0,o.Z)({root:{"&:hover":{backgroundColor:"transparent"}}},x.FU)),g=function(e){var n=b();return(0,Z.jsx)(c.Z,(0,o.Z)({className:n.root,disableRipple:!0,color:"default",checkedIcon:(0,Z.jsx)("span",{className:n.radioSelectedIcon}),icon:(0,Z.jsx)("span",{className:n.radioUnselectedIcon})},e))};n.Z=(0,p.Z)((function(e){return(0,m.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},x.YI),x.Hr),{},{optionLabel:{"&.Mui-disabled":{"& .MuiFormControlLabel-label":{color:"#9c9c9c"}},"&:last-child":{marginRight:0},"& .MuiFormControlLabel-label":{fontSize:12,color:"#07193E"}},checkedOption:{"& .MuiFormControlLabel-label":{fontSize:12,color:"#07193E",fontWeight:700}}}))}))((function(e){var n=e.selectorOptions,a=void 0===n?[]:n,o=e.currentSelection,c=e.label,m=e.id,p=e.name,h=e.onChange,x=e.tooltip,b=void 0===x?"":x,v=e.disableOptions,j=void 0!==v&&v,C=e.classes,k=e.displayInColumn,N=void 0!==k&&k;return(0,Z.jsxs)(r.ZP,{container:!0,alignItems:"center",children:[(0,Z.jsx)(r.ZP,{item:!0,xs:!0,children:(0,Z.jsxs)(d.Z,{htmlFor:m,className:C.inputLabel,children:[(0,Z.jsx)("span",{children:c}),""!==b&&(0,Z.jsx)("div",{className:C.tooltipContainer,children:(0,Z.jsx)(u.Z,{title:b,placement:"top-start",children:(0,Z.jsx)("div",{children:(0,Z.jsx)(f.Z,{})})})})]})}),(0,Z.jsx)(r.ZP,{item:!0,xs:!0,className:C.radioOptionsLayout,children:(0,Z.jsx)(l.Z,{"aria-label":m,id:m,name:p,value:o,onChange:h,row:!N,style:{display:"block",textAlign:"right"},children:a.map((function(e){return(0,Z.jsx)(s.Z,{value:e.value,control:(0,Z.jsx)(g,{}),label:e.label,disabled:j,className:(0,i.Z)(C.optionLabel,(0,t.Z)({},C.checkedOption,e.value===o))},"rd-".concat(p,"-").concat(e.value))}))})})]})}))},67754:function(e,n,a){var t=a(18489),o=a(50390),i=a(25594),r=a(46413),l=a(36554),s=a(94187),c=a(47554),d=a(43965),u=a(31680),m=a(86509),p=a(4285),h=a(72462),x=a(97538),f=a(62559),Z=(0,p.Z)((function(e){return(0,m.Z)({root:{height:38,lineHeight:1,"label + &":{marginTop:e.spacing(3)}},input:{height:38,position:"relative",color:"#07193E",fontSize:13,fontWeight:600,padding:"8px 20px 10px 10px",border:"#e5e5e5 1px solid",borderRadius:4,display:"flex",alignItems:"center","&:hover":{borderColor:"#393939"},"&:focus":{backgroundColor:"#fff"}}})}))(r.ZP);n.Z=(0,p.Z)((function(e){return(0,m.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},h.YI),h.Hr),{},{inputLabel:(0,t.Z)((0,t.Z)({},h.YI.inputLabel),{},{"& span":{fontWeight:"normal"}}),fieldContainer:{display:"flex","@media (max-width: 600px)":{flexFlow:"column"}}}))}))((function(e){var n=e.classes,a=e.id,t=e.name,r=e.onChange,m=e.options,p=e.label,h=e.tooltip,b=void 0===h?"":h,g=e.value,v=e.disabled,j=void 0!==v&&v;return(0,f.jsx)(o.Fragment,{children:(0,f.jsxs)(i.ZP,{item:!0,xs:12,className:n.fieldContainer,children:[""!==p&&(0,f.jsxs)(l.Z,{htmlFor:a,className:n.inputLabel,children:[(0,f.jsx)("span",{children:p}),""!==b&&(0,f.jsx)("div",{className:n.tooltipContainer,children:(0,f.jsx)(s.Z,{title:b,placement:"top-start",children:(0,f.jsx)("div",{className:n.tooltip,children:(0,f.jsx)(x.Z,{})})})})]}),(0,f.jsx)(c.Z,{fullWidth:!0,children:(0,f.jsx)(d.Z,{id:a,name:t,value:g,onChange:r,input:(0,f.jsx)(Z,{}),disabled:j,children:m.map((function(e){return(0,f.jsx)(u.Z,{value:e.value,children:e.label},"select-".concat(t,"-").concat(e.label))}))})})]})})}))},76352:function(e,n,a){a.d(n,{Z:function(){return w}});var t,o=a(23430),i=a(18489),r=a(50390),l=a(34424),s=a(95467),c=a(97771),d=a(84402),u=a(78426),m=a(93085),p=a(86509),h=a(4285),x=a(72462),f=a(44149),Z=a(38342),b=a.n(Z),g=a(92125),v=a(19538),j=a(21278),C=a(62559),k=function(){clearInterval(t)},N={displayErrorMessage:f.zb},y=(0,l.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),N)((0,h.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var n=e.classes,a=e.modalSnackMessage,i=e.displayErrorMessage,l=e.customStyle,s=(0,r.useState)(!1),c=(0,o.Z)(s,2),d=c[0],u=c[1],m=(0,r.useState)(!1),p=(0,o.Z)(m,2),h=p[0],x=p[1],f=(0,r.useCallback)((function(){x(!1)}),[]);(0,r.useEffect)((function(){h||(i({detailedError:"",errorMessage:""}),u(!1))}),[i,h]),(0,r.useEffect)((function(){""!==a.message&&"error"===a.type&&x(!0)}),[f,a.message,a.type]);var Z=b()(a,"message",""),N=b()(a,"detailedErrorMsg","");return"error"!==a.type||""===Z?null:(0,C.jsx)(r.Fragment,{children:(0,C.jsxs)("div",{className:"".concat(n.modalErrorContainer," ").concat(h?n.modalErrorShow:""),style:l,onMouseOver:k,onMouseLeave:function(){t=setInterval(f,1e4)},children:[(0,C.jsx)("button",{className:n.closeButton,onClick:f,children:(0,C.jsx)(j.Z,{})}),(0,C.jsxs)("div",{className:n.errorTitle,children:[(0,C.jsx)("span",{className:n.messageIcon,children:(0,C.jsx)(v.Z,{})}),(0,C.jsx)("span",{className:n.errorLabel,children:Z})]}),""!==N&&(0,C.jsxs)(r.Fragment,{children:[(0,C.jsx)("div",{className:n.detailsContainerLink,children:(0,C.jsxs)("button",{className:n.detailsButton,onClick:function(){u(!d)},children:["Details",(0,C.jsx)(g.Z,{className:"".concat(n.arrowElement," ").concat(d?n.arrowOpen:"")})]})}),(0,C.jsx)("div",{className:"".concat(n.extraDetailsContainer," ").concat(d?n.extraDetailsOpen:""),children:N})]})]})})}))),S=(0,l.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:f.MK}),w=(0,h.Z)((function(e){return(0,p.Z)((0,i.Z)((0,i.Z)({},x.Qw),{},{root:{"& .MuiPaper-root":{padding:"1rem 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},x.sN))}))(S((function(e){var n=e.onClose,a=e.modalOpen,t=e.title,l=e.children,p=e.classes,h=e.wideLimit,x=void 0===h||h,f=e.modalSnackMessage,Z=e.noContentPadding,b=e.setModalSnackMessage,g=e.titleIcon,v=void 0===g?null:g,k=(0,r.useState)(!1),N=(0,o.Z)(k,2),S=N[0],w=N[1];(0,r.useEffect)((function(){b("")}),[b]),(0,r.useEffect)((function(){if(f){if(""===f.message)return void w(!1);"error"!==f.type&&w(!0)}}),[f]);var L=x?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},F="";return f&&(F=f.detailedErrorMsg,(""===f.detailedErrorMsg||f.detailedErrorMsg.length<5)&&(F=f.message)),(0,C.jsxs)(d.Z,(0,i.Z)((0,i.Z)({open:a,classes:p},L),{},{scroll:"paper",onClose:function(e,a){"backdropClick"!==a&&n()},className:p.root,children:[(0,C.jsxs)(u.Z,{className:p.title,children:[(0,C.jsxs)("div",{className:p.titleText,children:[v," ",t]}),(0,C.jsx)("div",{className:p.closeContainer,children:(0,C.jsx)(s.Z,{"aria-label":"close",className:p.closeButton,onClick:n,disableRipple:!0,size:"small",children:(0,C.jsx)(j.Z,{})})})]}),(0,C.jsx)(y,{}),(0,C.jsx)(c.Z,{open:S,className:p.snackBarModal,onClose:function(){w(!1),b("")},message:F,ContentProps:{className:"".concat(p.snackBar," ").concat(f&&"error"===f.type?p.errorSnackBar:"")},autoHideDuration:f&&"error"===f.type?1e4:5e3}),(0,C.jsx)(m.Z,{className:Z?"":p.content,children:l})]}))})))}}]);
+//# sourceMappingURL=1711.669b8be7.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1711.a046e26c.chunk.js.map b/portal-ui/build/static/js/1711.669b8be7.chunk.js.map
similarity index 66%
rename from portal-ui/build/static/js/1711.a046e26c.chunk.js.map
rename to portal-ui/build/static/js/1711.669b8be7.chunk.js.map
index 53306b05b..e6d89ad05 100644
--- a/portal-ui/build/static/js/1711.a046e26c.chunk.js.map
+++ b/portal-ui/build/static/js/1711.669b8be7.chunk.js.map
@@ -1 +1 @@
-{"version":3,"file":"static/js/1711.a046e26c.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EnableQuota.tsx","screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/RadioGroupSelector/RadioGroupSelector.tsx","screens/Console/Common/FormComponents/SelectWrapper/SelectWrapper.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Button, LinearProgress, SelectChangeEvent } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport { factorForDropdown, getBytes, units } from \"../../../../common/utils\";\nimport { BucketQuota } from \"../types\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport RadioGroupSelector from \"../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport SelectWrapper from \"../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport api from \"../../../../common/api\";\nimport { BucketQuotaIcon } from \"../../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\ninterface IEnableQuotaProps {\n classes: any;\n open: boolean;\n enabled: boolean;\n cfg: BucketQuota | null;\n selectedBucket: string;\n closeModalAndRefresh: () => void;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst EnableQuota = ({\n classes,\n open,\n enabled,\n cfg,\n selectedBucket,\n closeModalAndRefresh,\n setModalErrorSnackMessage,\n}: IEnableQuotaProps) => {\n const [loading, setLoading] = useState(false);\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quotaType, setQuotaType] = useState(\"hard\");\n const [quotaSize, setQuotaSize] = useState(\"1\");\n const [quotaUnit, setQuotaUnit] = useState(\"TiB\");\n\n useEffect(() => {\n if (enabled) {\n setQuotaEnabled(true);\n if (cfg) {\n setQuotaType(cfg.type);\n setQuotaSize(`${cfg.quota}`);\n setQuotaUnit(`B`);\n\n let maxUnit = \"B\";\n let maxQuota = cfg.quota;\n\n for (let i = 0; i < units.length; i++) {\n if (cfg.quota % Math.pow(1024, i) === 0) {\n maxQuota = cfg.quota / Math.pow(1024, i);\n maxUnit = units[i];\n } else {\n break;\n }\n }\n setQuotaSize(`${maxQuota}`);\n setQuotaUnit(maxUnit);\n }\n }\n }, [enabled, cfg]);\n\n const enableBucketEncryption = (event: React.FormEvent) => {\n event.preventDefault();\n if (loading) {\n return;\n }\n let req = {\n enabled: quotaEnabled,\n amount: parseInt(getBytes(quotaSize, quotaUnit, false)),\n quota_type: quotaType,\n };\n\n api\n .invoke(\"PUT\", `/api/v1/buckets/${selectedBucket}/quota`, req)\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n setModalErrorSnackMessage(err);\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n title=\"Enable Bucket Quota\"\n titleIcon={}\n >\n \n \n );\n};\n\nconst connector = connect(null, {\n setModalErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(EnableQuota));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { InputLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { actionsTray, fieldBasic } from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\n\ninterface IFormSwitch {\n label?: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n description?: string;\n index?: number;\n checked: boolean;\n switchOnly?: boolean;\n indicatorLabels?: string[];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n divContainer: {\n marginBottom: 20,\n },\n indicatorLabelOn: {\n fontWeight: \"bold\",\n color: \"#081C42 !important\",\n },\n indicatorLabel: {\n fontSize: 12,\n color: \"#E2E2E2\",\n margin: \"0 8px 0 10px\",\n },\n fieldDescription: {\n marginTop: 4,\n color: \"#999999\",\n },\n tooltip: {\n fontSize: 16,\n },\n ...actionsTray,\n ...fieldBasic,\n });\n\nconst StyledSwitch = withStyles((theme) => ({\n root: {\n width: 50,\n height: 24,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 1,\n \"&$checked\": {\n transform: \"translateX(24px)\",\n color: theme.palette.common.white,\n \"& + $track\": {\n backgroundColor: \"#4CCB92\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n border: \"none\",\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#4CCB92\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 22,\n height: 22,\n backgroundColor: \"#FAFAFA\",\n border: \"2px solid #FFFFFF\",\n marginLeft: 1,\n },\n track: {\n borderRadius: 24 / 2,\n backgroundColor: \"#E2E2E2\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n switchContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n}))(Switch);\n\nconst FormSwitchWrapper = ({\n label = \"\",\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n switchOnly = false,\n tooltip = \"\",\n description = \"\",\n classes,\n indicatorLabels,\n}: IFormSwitch) => {\n const switchComponent = (\n \n {!switchOnly && (\n \n {indicatorLabels && indicatorLabels.length > 1\n ? indicatorLabels[1]\n : \"OFF\"}\n \n )}\n \n {!switchOnly && (\n \n {indicatorLabels ? indicatorLabels[0] : \"ON\"}\n \n )}\n \n );\n\n if (switchOnly) {\n return switchComponent;\n }\n\n return (\n
\n );\n};\n\nexport default withStyles(styles)(FormSwitchWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n })\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport clsx from \"clsx\";\nimport Grid from \"@mui/material/Grid\";\nimport RadioGroup from \"@mui/material/RadioGroup\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport Radio, { RadioProps } from \"@mui/material/Radio\";\nimport { InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { fieldBasic, radioIcons, tooltipHelper } from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\n\nexport interface SelectorTypes {\n label: string;\n value: string;\n}\n\ninterface RadioGroupProps {\n selectorOptions: SelectorTypes[];\n currentSelection: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n disableOptions?: boolean;\n onChange: (e: React.ChangeEvent) => void;\n classes: any;\n displayInColumn?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n optionLabel: {\n \"&.Mui-disabled\": {\n \"& .MuiFormControlLabel-label\": {\n color: \"#9c9c9c\",\n },\n },\n \"&:last-child\": {\n marginRight: 0,\n },\n \"& .MuiFormControlLabel-label\": {\n fontSize: 12,\n color: \"#07193E\",\n },\n },\n checkedOption: {\n \"& .MuiFormControlLabel-label\": {\n fontSize: 12,\n color: \"#07193E\",\n fontWeight: 700,\n },\n },\n });\n\nconst radioStyles = makeStyles({\n root: {\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n ...radioIcons,\n});\n\nconst RadioButton = (props: RadioProps) => {\n const classes = radioStyles();\n\n return (\n }\n icon={}\n {...props}\n />\n );\n};\n\nexport const RadioGroupSelector = ({\n selectorOptions = [],\n currentSelection,\n label,\n id,\n name,\n onChange,\n tooltip = \"\",\n disableOptions = false,\n classes,\n displayInColumn = false,\n}: RadioGroupProps) => {\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n \n
\n )}\n \n \n \n \n {selectorOptions.map((selectorOption) => {\n return (\n }\n label={selectorOption.label}\n disabled={disableOptions}\n className={clsx(classes.optionLabel, {\n [classes.checkedOption]:\n selectorOption.value === currentSelection,\n })}\n />\n );\n })}\n \n \n \n );\n};\n\nexport default withStyles(styles)(RadioGroupSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n FormControl,\n InputLabel,\n MenuItem,\n Select,\n InputBase,\n Tooltip,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\n\nexport interface selectorTypes {\n label: string;\n value: string;\n}\n\ninterface SelectProps {\n options: selectorTypes[];\n value: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n onChange: (e: SelectChangeEvent) => void;\n disabled?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n inputLabel: {\n ...fieldBasic.inputLabel,\n \"& span\": {\n fontWeight: \"normal\",\n },\n },\n fieldContainer: {\n display: \"flex\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n });\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n height: 38,\n lineHeight: 1,\n \"label + &\": {\n marginTop: theme.spacing(3),\n },\n },\n input: {\n height: 38,\n position: \"relative\",\n color: \"#07193E\",\n fontSize: 13,\n fontWeight: 600,\n padding: \"8px 20px 10px 10px\",\n border: \"#e5e5e5 1px solid\",\n borderRadius: 4,\n display: \"flex\",\n alignItems: \"center\",\n \"&:hover\": {\n borderColor: \"#393939\",\n },\n \"&:focus\": {\n backgroundColor: \"#fff\",\n },\n },\n })\n)(InputBase);\n\nconst SelectWrapper = ({\n classes,\n id,\n name,\n onChange,\n options,\n label,\n tooltip = \"\",\n value,\n disabled = false,\n}: SelectProps) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n \n
\n )}\n \n )}\n \n }\n disabled={disabled}\n >\n {options.map((option) => (\n \n ))}\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SelectWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"1rem 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n"],"names":["connector","connect","setModalErrorSnackMessage","withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","classes","open","enabled","cfg","selectedBucket","closeModalAndRefresh","useState","loading","setLoading","quotaEnabled","setQuotaEnabled","quotaType","setQuotaType","quotaSize","setQuotaSize","quotaUnit","setQuotaUnit","useEffect","type","quota","maxUnit","maxQuota","i","units","Math","pow","modalOpen","onClose","title","titleIcon","noValidate","autoComplete","onSubmit","e","event","preventDefault","req","amount","parseInt","getBytes","quota_type","api","then","catch","err","enableBucketEncryption","container","item","xs","className","formScrollable","formFieldRow","value","id","name","checked","onChange","target","label","currentSelection","selectorOptions","required","min","style","width","options","factorForDropdown","modalButtonBar","variant","color","disabled","onClick","StyledSwitch","root","height","padding","margin","switchBase","transform","palette","common","white","backgroundColor","boxShadow","opacity","border","thumb","marginLeft","track","borderRadius","transition","transitions","create","focusVisible","switchContainer","display","alignItems","justifyContent","Switch","divContainer","marginBottom","indicatorLabelOn","fontWeight","indicatorLabel","fontSize","fieldDescription","marginTop","tooltip","actionsTray","fieldBasic","switchOnly","description","indicatorLabels","switchComponent","clsx","length","inputProps","disableRipple","disableFocusRipple","disableTouchRipple","sm","md","htmlFor","inputLabel","tooltipContainer","placement","textAlign","component","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","multiline","index","error","placeholder","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","errorInField","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","size","radioStyles","radioIcons","RadioButton","checkedIcon","radioSelectedIcon","icon","radioUnselectedIcon","optionLabel","marginRight","checkedOption","disableOptions","displayInColumn","radioOptionsLayout","row","map","selectorOption","control","SelectStyled","lineHeight","spacing","input","borderColor","InputBase","fieldContainer","flexFlow","option","timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","state","modalSnackMessage","system","modalSnackBar","modalErrorContainer","borderLeftWidth","zIndex","left","transitionDuration","modalErrorShow","closeButton","cursor","errorTitle","errorLabel","messageIcon","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","overflow","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","detailedError","errorMessage","message","get","messageDetails","Fragment","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","setModalSnackMessage","deleteDialogStyles","content","paddingBottom","customDialogSize","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","Dialog","scroll","reason","DialogTitle","titleText","closeContainer","IconButton","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/js/1711.669b8be7.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EnableQuota.tsx","screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/RadioGroupSelector/RadioGroupSelector.tsx","screens/Console/Common/FormComponents/SelectWrapper/SelectWrapper.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Button, LinearProgress, SelectChangeEvent } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport { factorForDropdown, getBytes, units } from \"../../../../common/utils\";\nimport { BucketQuota } from \"../types\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport RadioGroupSelector from \"../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport SelectWrapper from \"../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport api from \"../../../../common/api\";\nimport { BucketQuotaIcon } from \"../../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\ninterface IEnableQuotaProps {\n classes: any;\n open: boolean;\n enabled: boolean;\n cfg: BucketQuota | null;\n selectedBucket: string;\n closeModalAndRefresh: () => void;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst EnableQuota = ({\n classes,\n open,\n enabled,\n cfg,\n selectedBucket,\n closeModalAndRefresh,\n setModalErrorSnackMessage,\n}: IEnableQuotaProps) => {\n const [loading, setLoading] = useState(false);\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quotaType, setQuotaType] = useState(\"hard\");\n const [quotaSize, setQuotaSize] = useState(\"1\");\n const [quotaUnit, setQuotaUnit] = useState(\"TiB\");\n\n useEffect(() => {\n if (enabled) {\n setQuotaEnabled(true);\n if (cfg) {\n setQuotaType(cfg.type);\n setQuotaSize(`${cfg.quota}`);\n setQuotaUnit(`B`);\n\n let maxUnit = \"B\";\n let maxQuota = cfg.quota;\n\n for (let i = 0; i < units.length; i++) {\n if (cfg.quota % Math.pow(1024, i) === 0) {\n maxQuota = cfg.quota / Math.pow(1024, i);\n maxUnit = units[i];\n } else {\n break;\n }\n }\n setQuotaSize(`${maxQuota}`);\n setQuotaUnit(maxUnit);\n }\n }\n }, [enabled, cfg]);\n\n const enableBucketEncryption = (event: React.FormEvent) => {\n event.preventDefault();\n if (loading) {\n return;\n }\n let req = {\n enabled: quotaEnabled,\n amount: parseInt(getBytes(quotaSize, quotaUnit, false)),\n quota_type: quotaType,\n };\n\n api\n .invoke(\"PUT\", `/api/v1/buckets/${selectedBucket}/quota`, req)\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n setModalErrorSnackMessage(err);\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n title=\"Enable Bucket Quota\"\n titleIcon={}\n >\n \n \n );\n};\n\nconst connector = connect(null, {\n setModalErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(EnableQuota));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { InputLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { actionsTray, fieldBasic } from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\n\ninterface IFormSwitch {\n label?: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n description?: string;\n index?: number;\n checked: boolean;\n switchOnly?: boolean;\n indicatorLabels?: string[];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n divContainer: {\n marginBottom: 20,\n },\n indicatorLabelOn: {\n fontWeight: \"bold\",\n color: \"#081C42 !important\",\n },\n indicatorLabel: {\n fontSize: 12,\n color: \"#E2E2E2\",\n margin: \"0 8px 0 10px\",\n },\n fieldDescription: {\n marginTop: 4,\n color: \"#999999\",\n },\n tooltip: {\n fontSize: 16,\n },\n ...actionsTray,\n ...fieldBasic,\n });\n\nconst StyledSwitch = withStyles((theme) => ({\n root: {\n width: 50,\n height: 24,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 1,\n \"&$checked\": {\n transform: \"translateX(24px)\",\n color: theme.palette.common.white,\n \"& + $track\": {\n backgroundColor: \"#4CCB92\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n border: \"none\",\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#4CCB92\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 22,\n height: 22,\n backgroundColor: \"#FAFAFA\",\n border: \"2px solid #FFFFFF\",\n marginLeft: 1,\n },\n track: {\n borderRadius: 24 / 2,\n backgroundColor: \"#E2E2E2\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n switchContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n}))(Switch);\n\nconst FormSwitchWrapper = ({\n label = \"\",\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n switchOnly = false,\n tooltip = \"\",\n description = \"\",\n classes,\n indicatorLabels,\n}: IFormSwitch) => {\n const switchComponent = (\n \n {!switchOnly && (\n \n {indicatorLabels && indicatorLabels.length > 1\n ? indicatorLabels[1]\n : \"OFF\"}\n \n )}\n \n {!switchOnly && (\n \n {indicatorLabels ? indicatorLabels[0] : \"ON\"}\n \n )}\n \n );\n\n if (switchOnly) {\n return switchComponent;\n }\n\n return (\n
\n );\n};\n\nexport default withStyles(styles)(FormSwitchWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n })\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport clsx from \"clsx\";\nimport Grid from \"@mui/material/Grid\";\nimport RadioGroup from \"@mui/material/RadioGroup\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport Radio, { RadioProps } from \"@mui/material/Radio\";\nimport { InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { fieldBasic, radioIcons, tooltipHelper } from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\n\nexport interface SelectorTypes {\n label: string;\n value: string;\n}\n\ninterface RadioGroupProps {\n selectorOptions: SelectorTypes[];\n currentSelection: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n disableOptions?: boolean;\n onChange: (e: React.ChangeEvent) => void;\n classes: any;\n displayInColumn?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n optionLabel: {\n \"&.Mui-disabled\": {\n \"& .MuiFormControlLabel-label\": {\n color: \"#9c9c9c\",\n },\n },\n \"&:last-child\": {\n marginRight: 0,\n },\n \"& .MuiFormControlLabel-label\": {\n fontSize: 12,\n color: \"#07193E\",\n },\n },\n checkedOption: {\n \"& .MuiFormControlLabel-label\": {\n fontSize: 12,\n color: \"#07193E\",\n fontWeight: 700,\n },\n },\n });\n\nconst radioStyles = makeStyles({\n root: {\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n ...radioIcons,\n});\n\nconst RadioButton = (props: RadioProps) => {\n const classes = radioStyles();\n\n return (\n }\n icon={}\n {...props}\n />\n );\n};\n\nexport const RadioGroupSelector = ({\n selectorOptions = [],\n currentSelection,\n label,\n id,\n name,\n onChange,\n tooltip = \"\",\n disableOptions = false,\n classes,\n displayInColumn = false,\n}: RadioGroupProps) => {\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n \n
\n )}\n \n \n \n \n {selectorOptions.map((selectorOption) => {\n return (\n }\n label={selectorOption.label}\n disabled={disableOptions}\n className={clsx(classes.optionLabel, {\n [classes.checkedOption]:\n selectorOption.value === currentSelection,\n })}\n\n />\n );\n })}\n \n \n \n );\n};\n\nexport default withStyles(styles)(RadioGroupSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n FormControl,\n InputLabel,\n MenuItem,\n Select,\n InputBase,\n Tooltip,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\n\nexport interface selectorTypes {\n label: string;\n value: string;\n}\n\ninterface SelectProps {\n options: selectorTypes[];\n value: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n onChange: (e: SelectChangeEvent) => void;\n disabled?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n inputLabel: {\n ...fieldBasic.inputLabel,\n \"& span\": {\n fontWeight: \"normal\",\n },\n },\n fieldContainer: {\n display: \"flex\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n });\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n height: 38,\n lineHeight: 1,\n \"label + &\": {\n marginTop: theme.spacing(3),\n },\n },\n input: {\n height: 38,\n position: \"relative\",\n color: \"#07193E\",\n fontSize: 13,\n fontWeight: 600,\n padding: \"8px 20px 10px 10px\",\n border: \"#e5e5e5 1px solid\",\n borderRadius: 4,\n display: \"flex\",\n alignItems: \"center\",\n \"&:hover\": {\n borderColor: \"#393939\",\n },\n \"&:focus\": {\n backgroundColor: \"#fff\",\n },\n },\n })\n)(InputBase);\n\nconst SelectWrapper = ({\n classes,\n id,\n name,\n onChange,\n options,\n label,\n tooltip = \"\",\n value,\n disabled = false,\n}: SelectProps) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n \n
\n )}\n \n )}\n \n }\n disabled={disabled}\n >\n {options.map((option) => (\n \n ))}\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SelectWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"1rem 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n"],"names":["connector","connect","setModalErrorSnackMessage","withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","classes","open","enabled","cfg","selectedBucket","closeModalAndRefresh","useState","loading","setLoading","quotaEnabled","setQuotaEnabled","quotaType","setQuotaType","quotaSize","setQuotaSize","quotaUnit","setQuotaUnit","useEffect","type","quota","maxUnit","maxQuota","i","units","Math","pow","modalOpen","onClose","title","titleIcon","noValidate","autoComplete","onSubmit","e","event","preventDefault","req","amount","parseInt","getBytes","quota_type","api","then","catch","err","enableBucketEncryption","container","item","xs","className","formScrollable","formFieldRow","value","id","name","checked","onChange","target","label","currentSelection","selectorOptions","required","min","style","width","options","factorForDropdown","modalButtonBar","variant","color","disabled","onClick","StyledSwitch","root","height","padding","margin","switchBase","transform","palette","common","white","backgroundColor","boxShadow","opacity","border","thumb","marginLeft","track","borderRadius","transition","transitions","create","focusVisible","switchContainer","display","alignItems","justifyContent","Switch","divContainer","marginBottom","indicatorLabelOn","fontWeight","indicatorLabel","fontSize","fieldDescription","marginTop","tooltip","actionsTray","fieldBasic","switchOnly","description","indicatorLabels","switchComponent","clsx","length","inputProps","disableRipple","disableFocusRipple","disableTouchRipple","sm","md","htmlFor","inputLabel","tooltipContainer","placement","textAlign","component","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","multiline","index","error","placeholder","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","errorInField","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","size","radioStyles","radioIcons","RadioButton","checkedIcon","radioSelectedIcon","icon","radioUnselectedIcon","optionLabel","marginRight","checkedOption","disableOptions","displayInColumn","radioOptionsLayout","row","map","selectorOption","control","SelectStyled","lineHeight","spacing","input","borderColor","InputBase","fieldContainer","flexFlow","option","timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","state","modalSnackMessage","system","modalSnackBar","modalErrorContainer","borderLeftWidth","zIndex","left","transitionDuration","modalErrorShow","closeButton","cursor","errorTitle","errorLabel","messageIcon","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","overflow","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","detailedError","errorMessage","message","get","messageDetails","Fragment","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","setModalSnackMessage","deleteDialogStyles","content","paddingBottom","customDialogSize","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","Dialog","scroll","reason","DialogTitle","titleText","closeContainer","IconButton","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1719.fbaa408a.chunk.js b/portal-ui/build/static/js/1719.06e59cd5.chunk.js
similarity index 98%
rename from portal-ui/build/static/js/1719.fbaa408a.chunk.js
rename to portal-ui/build/static/js/1719.06e59cd5.chunk.js
index 631384e41..a2b45968b 100644
--- a/portal-ui/build/static/js/1719.fbaa408a.chunk.js
+++ b/portal-ui/build/static/js/1719.06e59cd5.chunk.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1719],{66964:function(n,t,e){var o=e(18489),a=e(50390),i=e(12066),r=e(25594),s=e(14602),l=e(94187),c=e(95467),d=e(86509),u=e(62449),g=e(4285),p=e(72462),m=e(97538),f=e(44977),v=e(62559),Z=(0,u.Z)((function(n){return(0,d.Z)((0,o.Z)({},p.gM))}));function h(n){var t=Z();return(0,v.jsx)(i.Z,(0,o.Z)({InputProps:{classes:t}},n))}t.Z=(0,g.Z)((function(n){return(0,d.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,o.Z)((0,o.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(n){var t=n.label,e=n.onChange,i=n.value,d=n.id,u=n.name,g=n.type,p=void 0===g?"text":g,Z=n.autoComplete,x=void 0===Z?"off":Z,b=n.disabled,I=void 0!==b&&b,j=n.multiline,P=void 0!==j&&j,y=n.tooltip,S=void 0===y?"":y,C=n.index,L=void 0===C?0:C,N=n.error,w=void 0===N?"":N,M=n.required,E=void 0!==M&&M,k=n.placeholder,R=void 0===k?"":k,T=n.min,B=n.max,F=n.overlayIcon,D=void 0===F?null:F,A=n.overlayObject,W=void 0===A?null:A,K=n.extraInputProps,O=void 0===K?{}:K,z=n.overlayAction,G=n.noLabelMinWidth,H=void 0!==G&&G,Y=n.pattern,$=void 0===Y?"":Y,_=n.autoFocus,q=void 0!==_&&_,Q=n.classes,V=n.className,X=void 0===V?"":V,J=(0,o.Z)({"data-index":L},O);return"number"===p&&T&&(J.min=T),"number"===p&&B&&(J.max=B),""!==$&&(J.pattern=$),(0,v.jsx)(a.Fragment,{children:(0,v.jsxs)(r.ZP,{container:!0,className:(0,f.Z)(""!==X?X:"",""!==w?Q.errorInField:Q.inputBoxContainer),children:[""!==t&&(0,v.jsxs)(s.Z,{htmlFor:d,className:H?Q.noMinWidthLabel:Q.inputLabel,children:[(0,v.jsxs)("span",{children:[t,E?"*":""]}),""!==S&&(0,v.jsx)("div",{className:Q.tooltipContainer,children:(0,v.jsx)(l.Z,{title:S,placement:"top-start",children:(0,v.jsx)("div",{className:Q.tooltip,children:(0,v.jsx)(m.Z,{})})})})]}),(0,v.jsxs)("div",{className:Q.textBoxContainer,children:[(0,v.jsx)(h,{id:d,name:u,fullWidth:!0,value:i,autoFocus:q,disabled:I,onChange:e,type:p,multiline:P,autoComplete:x,inputProps:J,error:""!==w,helperText:w,placeholder:R,className:Q.inputRebase}),D&&(0,v.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==t?"withLabel":""),children:(0,v.jsx)(c.Z,{onClick:z?function(){z()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:D})}),W&&(0,v.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==t?"withLabel":""),children:W})]})]})})}))},21639:function(n,t,e){var o=e(23430),a=e(50390),i=e(30324);t.Z=function(n,t){var e=(0,a.useState)(!1),r=(0,o.Z)(e,2),s=r[0],l=r[1];return[s,function(e,o,a){l(!0),i.Z.invoke(e,o,a).then((function(t){l(!1),n(t)})).catch((function(n){l(!1),t(n)}))}]}},60656:function(n,t,e){var o=e(18489),a=e(50390),i=e(84402),r=e(78426),s=e(93085),l=e(7887),c=e(66946),d=e(14476),u=e(95467),g=e(21278),p=e(86509),m=e(4285),f=e(72462),v=e(62559);t.Z=(0,m.Z)((function(n){return(0,p.Z)((0,o.Z)({},f.Qw))}))((function(n){var t=n.isOpen,e=void 0!==t&&t,p=n.onClose,m=n.onCancel,f=n.onConfirm,Z=n.classes,h=void 0===Z?{}:Z,x=n.title,b=void 0===x?"":x,I=n.isLoading,j=n.confirmationContent,P=n.cancelText,y=void 0===P?"Cancel":P,S=n.confirmText,C=void 0===S?"Confirm":S,L=n.confirmButtonProps,N=void 0===L?{}:L,w=n.cancelButtonProps,M=void 0===w?{}:w,E=n.titleIcon,k=void 0===E?null:E;return(0,v.jsxs)(i.Z,{open:e,onClose:function(n,t){"backdropClick"!==t&&p()},className:h.root,sx:{"& .MuiPaper-root":{padding:"1rem 2rem 2rem 1rem"}},children:[(0,v.jsxs)(r.Z,{className:h.title,children:[(0,v.jsxs)("div",{className:h.titleText,children:[k," ",b]}),(0,v.jsx)("div",{className:h.closeContainer,children:(0,v.jsx)(u.Z,{"aria-label":"close",className:h.closeButton,onClick:p,disableRipple:!0,size:"small",children:(0,v.jsx)(g.Z,{})})})]}),(0,v.jsx)(s.Z,{className:h.content,children:j}),(0,v.jsxs)(l.Z,{className:h.actions,children:[(0,v.jsx)(c.Z,(0,o.Z)((0,o.Z)({className:h.cancelButton,onClick:m||p,disabled:I,type:"button"},M),{},{variant:"outlined",color:"primary",children:y})),(0,v.jsx)(d.Z,(0,o.Z)((0,o.Z)({className:h.confirmButton,type:"button",onClick:f,loading:I,disabled:I,variant:"outlined",color:"secondary",loadingPosition:"start",startIcon:(0,v.jsx)(a.Fragment,{}),autoFocus:!0},N),{},{children:C}))]})]})}))},51719:function(n,t,e){e.r(t),e.d(t,{default:function(){return P}});var o=e(23430),a=e(18489),i=e(50390),r=e(34424),s=e(86509),l=e(4285),c=e(72462),d=e(28948),u=e(44149),g=e(30324),p=e(17777),m=e(23473),f=e(66964),v=e(25594),Z=e(21639),h=e(60656),x=e(11387),b=e(62559),I=(0,r.$j)(null,{setErrorSnackMessage:u.Ih})((function(n){var t=n.deleteOpen,e=n.selectedPod,a=n.closeDeleteModalAndRefresh,r=n.setErrorSnackMessage,s=(0,i.useState)(""),l=(0,o.Z)(s,2),c=l[0],d=l[1],u=(0,Z.Z)((function(){return a(!0)}),(function(n){return r(n)})),g=(0,o.Z)(u,2),p=g[0],I=g[1];return(0,b.jsx)(h.Z,{title:"Delete Pod",confirmText:"Delete",isOpen:t,titleIcon:(0,b.jsx)(x.Nv,{}),isLoading:p,onConfirm:function(){c===e.name?I("DELETE","/api/v1/namespaces/".concat(e.namespace,"/tenants/").concat(e.tenant,"/pods/").concat(e.name)):r({errorMessage:"Tenant name is incorrect",detailedError:""})},onClose:function(){return a(!1)},confirmButtonProps:{disabled:c!==e.name||p},confirmationContent:(0,b.jsxs)(m.Z,{children:["To continue please type ",(0,b.jsx)("b",{children:e.name})," in the box.",(0,b.jsx)(v.ZP,{item:!0,xs:12,children:(0,b.jsx)(f.Z,{id:"retype-pod",name:"retype-pod",onChange:function(n){d(n.target.value)},label:"",value:c})})]})})})),j=(0,r.$j)((function(n){return{loadingTenant:n.tenants.tenantDetails.loadingTenant}}),{setErrorSnackMessage:u.Ih}),P=(0,l.Z)((function(n){return(0,s.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},c.oZ),c.VX),(0,c.Bz)(n.spacing(4))))}))(j((function(n){var t=n.classes,e=n.match,a=n.history,r=n.loadingTenant,s=(0,i.useState)([]),l=(0,o.Z)(s,2),c=l[0],m=l[1],f=(0,i.useState)(!0),Z=(0,o.Z)(f,2),h=Z[0],x=Z[1],j=(0,i.useState)(!1),P=(0,o.Z)(j,2),y=P[0],S=P[1],C=(0,i.useState)(null),L=(0,o.Z)(C,2),N=L[0],w=L[1],M=e.params.tenantName,E=e.params.tenantNamespace,k=[{type:"view",onClick:function(n){a.push("/namespaces/".concat(E,"/tenants/").concat(M,"/pods/").concat(n.name))}},{type:"delete",onClick:function(n){n.tenant=M,n.namespace=E,w(n),S(!0)}}];return(0,i.useEffect)((function(){r&&x(!0)}),[r]),(0,i.useEffect)((function(){h&&g.Z.invoke("GET","/api/v1/namespaces/".concat(E,"/tenants/").concat(M,"/pods")).then((function(n){for(var t=0;t :not(:first-of-type)":{marginLeft:8}})})),f=i.forwardRef((function(n,t){var e=(0,c.Z)({props:n,name:"MuiDialogActions"}),i=e.className,l=e.disableSpacing,d=void 0!==l&&l,f=(0,o.Z)(e,p),v=(0,a.Z)({},e,{disableSpacing:d}),Z=function(n){var t=n.classes,e={root:["root",!n.disableSpacing&&"spacing"]};return(0,s.Z)(e,u,t)}(v);return(0,g.jsx)(m,(0,a.Z)({className:(0,r.Z)(Z.root,i),ownerState:v,ref:t},f))}))},23473:function(n,t,e){e.d(t,{Z:function(){return f}});var o=e(1048),a=e(32793),i=e(50390),r=e(50076),s=e(8208),l=e(15573),c=e(35477),d=e(10594);function u(n){return(0,d.Z)("MuiDialogContentText",n)}(0,e(43349).Z)("MuiDialogContentText",["root"]);var g=e(62559),p=["children"],m=(0,s.ZP)(c.Z,{shouldForwardProp:function(n){return(0,s.FO)(n)||"classes"===n},name:"MuiDialogContentText",slot:"Root",overridesResolver:function(n,t){return t.root}})({}),f=i.forwardRef((function(n,t){var e=(0,l.Z)({props:n,name:"MuiDialogContentText"}),i=(0,o.Z)(e,p),s=function(n){var t=n.classes,e=(0,r.Z)({root:["root"]},u,t);return(0,a.Z)({},t,e)}(i);return(0,g.jsx)(m,(0,a.Z)({component:"p",variant:"body1",color:"text.secondary",ref:t,ownerState:i},e,{classes:s}))}))}}]);
-//# sourceMappingURL=1719.fbaa408a.chunk.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1719],{66964:function(n,t,e){var o=e(18489),a=e(50390),i=e(12066),r=e(25594),s=e(36554),l=e(94187),c=e(95467),d=e(86509),u=e(62449),g=e(4285),p=e(72462),m=e(97538),f=e(44977),v=e(62559),Z=(0,u.Z)((function(n){return(0,d.Z)((0,o.Z)({},p.gM))}));function h(n){var t=Z();return(0,v.jsx)(i.Z,(0,o.Z)({InputProps:{classes:t}},n))}t.Z=(0,g.Z)((function(n){return(0,d.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,o.Z)((0,o.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(n){var t=n.label,e=n.onChange,i=n.value,d=n.id,u=n.name,g=n.type,p=void 0===g?"text":g,Z=n.autoComplete,x=void 0===Z?"off":Z,b=n.disabled,I=void 0!==b&&b,j=n.multiline,P=void 0!==j&&j,y=n.tooltip,S=void 0===y?"":y,C=n.index,L=void 0===C?0:C,N=n.error,w=void 0===N?"":N,M=n.required,E=void 0!==M&&M,k=n.placeholder,R=void 0===k?"":k,T=n.min,B=n.max,F=n.overlayIcon,D=void 0===F?null:F,A=n.overlayObject,W=void 0===A?null:A,K=n.extraInputProps,O=void 0===K?{}:K,z=n.overlayAction,G=n.noLabelMinWidth,H=void 0!==G&&G,Y=n.pattern,$=void 0===Y?"":Y,_=n.autoFocus,q=void 0!==_&&_,Q=n.classes,V=n.className,X=void 0===V?"":V,J=(0,o.Z)({"data-index":L},O);return"number"===p&&T&&(J.min=T),"number"===p&&B&&(J.max=B),""!==$&&(J.pattern=$),(0,v.jsx)(a.Fragment,{children:(0,v.jsxs)(r.ZP,{container:!0,className:(0,f.Z)(""!==X?X:"",""!==w?Q.errorInField:Q.inputBoxContainer),children:[""!==t&&(0,v.jsxs)(s.Z,{htmlFor:d,className:H?Q.noMinWidthLabel:Q.inputLabel,children:[(0,v.jsxs)("span",{children:[t,E?"*":""]}),""!==S&&(0,v.jsx)("div",{className:Q.tooltipContainer,children:(0,v.jsx)(l.Z,{title:S,placement:"top-start",children:(0,v.jsx)("div",{className:Q.tooltip,children:(0,v.jsx)(m.Z,{})})})})]}),(0,v.jsxs)("div",{className:Q.textBoxContainer,children:[(0,v.jsx)(h,{id:d,name:u,fullWidth:!0,value:i,autoFocus:q,disabled:I,onChange:e,type:p,multiline:P,autoComplete:x,inputProps:J,error:""!==w,helperText:w,placeholder:R,className:Q.inputRebase}),D&&(0,v.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==t?"withLabel":""),children:(0,v.jsx)(c.Z,{onClick:z?function(){z()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:D})}),W&&(0,v.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==t?"withLabel":""),children:W})]})]})})}))},21639:function(n,t,e){var o=e(23430),a=e(50390),i=e(30324);t.Z=function(n,t){var e=(0,a.useState)(!1),r=(0,o.Z)(e,2),s=r[0],l=r[1];return[s,function(e,o,a){l(!0),i.Z.invoke(e,o,a).then((function(t){l(!1),n(t)})).catch((function(n){l(!1),t(n)}))}]}},60656:function(n,t,e){var o=e(18489),a=e(50390),i=e(84402),r=e(78426),s=e(93085),l=e(7887),c=e(66946),d=e(14476),u=e(95467),g=e(21278),p=e(86509),m=e(4285),f=e(72462),v=e(62559);t.Z=(0,m.Z)((function(n){return(0,p.Z)((0,o.Z)({},f.Qw))}))((function(n){var t=n.isOpen,e=void 0!==t&&t,p=n.onClose,m=n.onCancel,f=n.onConfirm,Z=n.classes,h=void 0===Z?{}:Z,x=n.title,b=void 0===x?"":x,I=n.isLoading,j=n.confirmationContent,P=n.cancelText,y=void 0===P?"Cancel":P,S=n.confirmText,C=void 0===S?"Confirm":S,L=n.confirmButtonProps,N=void 0===L?{}:L,w=n.cancelButtonProps,M=void 0===w?{}:w,E=n.titleIcon,k=void 0===E?null:E;return(0,v.jsxs)(i.Z,{open:e,onClose:function(n,t){"backdropClick"!==t&&p()},className:h.root,sx:{"& .MuiPaper-root":{padding:"1rem 2rem 2rem 1rem"}},children:[(0,v.jsxs)(r.Z,{className:h.title,children:[(0,v.jsxs)("div",{className:h.titleText,children:[k," ",b]}),(0,v.jsx)("div",{className:h.closeContainer,children:(0,v.jsx)(u.Z,{"aria-label":"close",className:h.closeButton,onClick:p,disableRipple:!0,size:"small",children:(0,v.jsx)(g.Z,{})})})]}),(0,v.jsx)(s.Z,{className:h.content,children:j}),(0,v.jsxs)(l.Z,{className:h.actions,children:[(0,v.jsx)(c.Z,(0,o.Z)((0,o.Z)({className:h.cancelButton,onClick:m||p,disabled:I,type:"button"},M),{},{variant:"outlined",color:"primary",children:y})),(0,v.jsx)(d.Z,(0,o.Z)((0,o.Z)({className:h.confirmButton,type:"button",onClick:f,loading:I,disabled:I,variant:"outlined",color:"secondary",loadingPosition:"start",startIcon:(0,v.jsx)(a.Fragment,{}),autoFocus:!0},N),{},{children:C}))]})]})}))},51719:function(n,t,e){e.r(t),e.d(t,{default:function(){return P}});var o=e(23430),a=e(18489),i=e(50390),r=e(34424),s=e(86509),l=e(4285),c=e(72462),d=e(28948),u=e(44149),g=e(30324),p=e(17777),m=e(23473),f=e(66964),v=e(25594),Z=e(21639),h=e(60656),x=e(98280),b=e(62559),I=(0,r.$j)(null,{setErrorSnackMessage:u.Ih})((function(n){var t=n.deleteOpen,e=n.selectedPod,a=n.closeDeleteModalAndRefresh,r=n.setErrorSnackMessage,s=(0,i.useState)(""),l=(0,o.Z)(s,2),c=l[0],d=l[1],u=(0,Z.Z)((function(){return a(!0)}),(function(n){return r(n)})),g=(0,o.Z)(u,2),p=g[0],I=g[1];return(0,b.jsx)(h.Z,{title:"Delete Pod",confirmText:"Delete",isOpen:t,titleIcon:(0,b.jsx)(x.Nv,{}),isLoading:p,onConfirm:function(){c===e.name?I("DELETE","/api/v1/namespaces/".concat(e.namespace,"/tenants/").concat(e.tenant,"/pods/").concat(e.name)):r({errorMessage:"Tenant name is incorrect",detailedError:""})},onClose:function(){return a(!1)},confirmButtonProps:{disabled:c!==e.name||p},confirmationContent:(0,b.jsxs)(m.Z,{children:["To continue please type ",(0,b.jsx)("b",{children:e.name})," in the box.",(0,b.jsx)(v.ZP,{item:!0,xs:12,children:(0,b.jsx)(f.Z,{id:"retype-pod",name:"retype-pod",onChange:function(n){d(n.target.value)},label:"",value:c})})]})})})),j=(0,r.$j)((function(n){return{loadingTenant:n.tenants.tenantDetails.loadingTenant}}),{setErrorSnackMessage:u.Ih}),P=(0,l.Z)((function(n){return(0,s.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},c.oZ),c.VX),(0,c.Bz)(n.spacing(4))))}))(j((function(n){var t=n.classes,e=n.match,a=n.history,r=n.loadingTenant,s=(0,i.useState)([]),l=(0,o.Z)(s,2),c=l[0],m=l[1],f=(0,i.useState)(!0),Z=(0,o.Z)(f,2),h=Z[0],x=Z[1],j=(0,i.useState)(!1),P=(0,o.Z)(j,2),y=P[0],S=P[1],C=(0,i.useState)(null),L=(0,o.Z)(C,2),N=L[0],w=L[1],M=e.params.tenantName,E=e.params.tenantNamespace,k=[{type:"view",onClick:function(n){a.push("/namespaces/".concat(E,"/tenants/").concat(M,"/pods/").concat(n.name))}},{type:"delete",onClick:function(n){n.tenant=M,n.namespace=E,w(n),S(!0)}}];return(0,i.useEffect)((function(){r&&x(!0)}),[r]),(0,i.useEffect)((function(){h&&g.Z.invoke("GET","/api/v1/namespaces/".concat(E,"/tenants/").concat(M,"/pods")).then((function(n){for(var t=0;t :not(:first-of-type)":{marginLeft:8}})})),f=i.forwardRef((function(n,t){var e=(0,c.Z)({props:n,name:"MuiDialogActions"}),i=e.className,l=e.disableSpacing,d=void 0!==l&&l,f=(0,o.Z)(e,p),v=(0,a.Z)({},e,{disableSpacing:d}),Z=function(n){var t=n.classes,e={root:["root",!n.disableSpacing&&"spacing"]};return(0,s.Z)(e,u,t)}(v);return(0,g.jsx)(m,(0,a.Z)({className:(0,r.Z)(Z.root,i),ownerState:v,ref:t},f))}))},23473:function(n,t,e){e.d(t,{Z:function(){return f}});var o=e(1048),a=e(32793),i=e(50390),r=e(50076),s=e(8208),l=e(15573),c=e(35477),d=e(10594);function u(n){return(0,d.Z)("MuiDialogContentText",n)}(0,e(43349).Z)("MuiDialogContentText",["root"]);var g=e(62559),p=["children"],m=(0,s.ZP)(c.Z,{shouldForwardProp:function(n){return(0,s.FO)(n)||"classes"===n},name:"MuiDialogContentText",slot:"Root",overridesResolver:function(n,t){return t.root}})({}),f=i.forwardRef((function(n,t){var e=(0,l.Z)({props:n,name:"MuiDialogContentText"}),i=(0,o.Z)(e,p),s=function(n){var t=n.classes,e=(0,r.Z)({root:["root"]},u,t);return(0,a.Z)({},t,e)}(i);return(0,g.jsx)(m,(0,a.Z)({component:"p",variant:"body1",color:"text.secondary",ref:t,ownerState:i},e,{classes:s}))}))}}]);
+//# sourceMappingURL=1719.06e59cd5.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1719.fbaa408a.chunk.js.map b/portal-ui/build/static/js/1719.06e59cd5.chunk.js.map
similarity index 99%
rename from portal-ui/build/static/js/1719.fbaa408a.chunk.js.map
rename to portal-ui/build/static/js/1719.06e59cd5.chunk.js.map
index 0f047ec5c..d52f136c7 100644
--- a/portal-ui/build/static/js/1719.fbaa408a.chunk.js.map
+++ b/portal-ui/build/static/js/1719.06e59cd5.chunk.js.map
@@ -1 +1 @@
-{"version":3,"file":"static/js/1719.fbaa408a.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/Hooks/useApi.tsx","screens/Console/Common/ModalWrapper/ConfirmDialog.tsx","screens/Console/Tenants/TenantDetails/DeletePod.tsx","screens/Console/Tenants/TenantDetails/PodsSummary.tsx","../node_modules/@mui/lab/LoadingButton/loadingButtonClasses.js","../node_modules/@mui/lab/LoadingButton/LoadingButton.js","../node_modules/@mui/material/DialogActions/dialogActionsClasses.js","../node_modules/@mui/material/DialogActions/DialogActions.js","../node_modules/@mui/material/DialogContentText/dialogContentTextClasses.js","../node_modules/@mui/material/DialogContentText/DialogContentText.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n })\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","import { useState } from \"react\";\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\n\ntype NoReturnFunction = (param?: any) => void;\ntype ApiMethodToInvoke = (method: string, url: string, data?: any) => void;\ntype IsApiInProgress = boolean;\n\nconst useApi = (\n onSuccess: NoReturnFunction,\n onError: NoReturnFunction\n): [IsApiInProgress, ApiMethodToInvoke] => {\n const [isLoading, setIsLoading] = useState(false);\n\n const callApi = (method: string, url: string, data?: any) => {\n setIsLoading(true);\n api\n .invoke(method, url, data)\n .then((res: any) => {\n setIsLoading(false);\n onSuccess(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setIsLoading(false);\n onError(err);\n });\n };\n\n return [isLoading, callApi];\n};\n\nexport default useApi;\n","import React from \"react\";\nimport {\n Button,\n ButtonProps,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n} from \"@mui/material\";\nimport { LoadingButton } from \"@mui/lab\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { deleteDialogStyles } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n });\n\ntype ConfirmDialogProps = {\n isOpen?: boolean;\n onClose: () => void;\n onCancel?: () => void;\n onConfirm: () => void;\n classes?: any;\n title: string;\n isLoading?: boolean;\n confirmationContent: React.ReactNode | React.ReactNode[];\n cancelText?: string;\n confirmText?: string;\n confirmButtonProps?: Partial;\n cancelButtonProps?: Partial;\n titleIcon?: React.ReactNode;\n};\n\nconst ConfirmDialog = ({\n isOpen = false,\n onClose,\n onCancel,\n onConfirm,\n classes = {},\n title = \"\",\n isLoading,\n confirmationContent,\n cancelText = \"Cancel\",\n confirmText = \"Confirm\",\n confirmButtonProps = {},\n cancelButtonProps = {},\n titleIcon = null,\n}: ConfirmDialogProps) => {\n return (\n \n );\n};\n\nexport default withStyles(styles)(ConfirmDialog);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\nimport { IPodListElement } from \"../ListTenants/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport { connect } from \"react-redux\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"../../../../icons\";\n\ninterface IDeletePod {\n deleteOpen: boolean;\n selectedPod: IPodListElement;\n closeDeleteModalAndRefresh: (refreshList: boolean) => any;\n setErrorSnackMessage: typeof setErrorSnackMessage;\n}\n\nconst DeletePod = ({\n deleteOpen,\n selectedPod,\n closeDeleteModalAndRefresh,\n setErrorSnackMessage,\n}: IDeletePod) => {\n const [retypePod, setRetypePod] = useState(\"\");\n\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => setErrorSnackMessage(err);\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n if (retypePod !== selectedPod.name) {\n setErrorSnackMessage({\n errorMessage: \"Tenant name is incorrect\",\n detailedError: \"\",\n });\n return;\n }\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/namespaces/${selectedPod.namespace}/tenants/${selectedPod.tenant}/pods/${selectedPod.name}`\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypePod !== selectedPod.name || deleteLoading,\n }}\n confirmationContent={\n \n To continue please type {selectedPod.name} in the box.\n \n ) => {\n setRetypePod(event.target.value);\n }}\n label=\"\"\n value={retypePod}\n />\n \n \n }\n />\n );\n};\n\nconst connector = connect(null, {\n setErrorSnackMessage,\n});\n\nexport default connector(DeletePod);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n containerForHeader,\n tableStyles,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { niceDays } from \"../../../../common/utils\";\nimport { IPodListElement } from \"../ListTenants/types\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport api from \"../../../../common/api\";\nimport TableWrapper from \"../../Common/TableWrapper/TableWrapper\";\nimport { AppState } from \"../../../../store\";\nimport { setTenantDetailsLoad } from \"../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport DeletePod from \"./DeletePod\";\nimport { Grid } from \"@mui/material\";\n\ninterface IPodsSummary {\n classes: any;\n match: any;\n history: any;\n loadingTenant: boolean;\n setTenantDetailsLoad: typeof setTenantDetailsLoad;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...tableStyles,\n ...containerForHeader(theme.spacing(4)),\n });\n\nconst PodsSummary = ({\n classes,\n match,\n history,\n loadingTenant,\n}: IPodsSummary) => {\n const [pods, setPods] = useState([]);\n const [loadingPods, setLoadingPods] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedPod, setSelectedPod] = useState(null);\n\n const tenantName = match.params[\"tenantName\"];\n const tenantNamespace = match.params[\"tenantNamespace\"];\n\n const podViewAction = (pod: IPodListElement) => {\n history.push(\n `/namespaces/${tenantNamespace}/tenants/${tenantName}/pods/${pod.name}`\n );\n return;\n };\n\n const closeDeleteModalAndRefresh = (reloadData: boolean) => {\n setDeleteOpen(false);\n setLoadingPods(true);\n };\n\n const confirmDeletePod = (pod: IPodListElement) => {\n pod.tenant = tenantName;\n pod.namespace = tenantNamespace;\n setSelectedPod(pod);\n setDeleteOpen(true);\n };\n\n const podTableActions = [\n { type: \"view\", onClick: podViewAction },\n { type: \"delete\", onClick: confirmDeletePod },\n ];\n\n useEffect(() => {\n if (loadingTenant) {\n setLoadingPods(true);\n }\n }, [loadingTenant]);\n\n useEffect(() => {\n if (loadingPods) {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenantNamespace}/tenants/${tenantName}/pods`\n )\n .then((result: IPodListElement[]) => {\n for (let i = 0; i < result.length; i++) {\n let currentTime = (Date.now() / 1000) | 0;\n result[i].time = niceDays(\n (currentTime - parseInt(result[i].timeCreated)).toString()\n );\n }\n setPods(result);\n setLoadingPods(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage({\n errorMessage: \"Error loading pods\",\n detailedError: err.detailedError,\n });\n });\n }\n }, [loadingPods, tenantName, tenantNamespace]);\n\n return (\n \n {deleteOpen && (\n \n )}\n
Pods
\n \n {\n return input !== null ? input : 0;\n },\n },\n { label: \"Node\", elementKey: \"node\" },\n ]}\n isLoading={loadingPods}\n records={pods}\n itemActions={podTableActions}\n entityName=\"Servers\"\n idField=\"name\"\n />\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.tenantDetails.loadingTenant,\n});\n\nconst connector = connect(mapState, {\n setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(PodsSummary));\n","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getLoadingButtonUtilityClass(slot) {\n return generateUtilityClass('MuiLoadingButton', slot);\n}\nconst loadingButtonClasses = generateUtilityClasses('MuiLoadingButton', ['root', 'loading', 'loadingIndicator', 'loadingIndicatorCenter', 'loadingIndicatorStart', 'loadingIndicatorEnd', 'endIconLoadingEnd', 'startIconLoadingStart']);\nexport default loadingButtonClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"disabled\", \"id\", \"loading\", \"loadingIndicator\", \"loadingPosition\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { chainPropTypes } from '@mui/utils';\nimport { capitalize, unstable_useId as useId } from '@mui/material/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport loadingButtonClasses, { getLoadingButtonUtilityClass } from './loadingButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n loading,\n loadingPosition,\n classes\n } = ownerState;\n const slots = {\n root: ['root', loading && 'loading'],\n startIcon: [loading && `startIconLoading${capitalize(loadingPosition)}`],\n endIcon: [loading && `endIconLoading${capitalize(loadingPosition)}`],\n loadingIndicator: ['loadingIndicator', loading && `loadingIndicator${capitalize(loadingPosition)}`]\n };\n const composedClasses = composeClasses(slots, getLoadingButtonUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n}; // TODO use `import { rootShouldForwardProp } from '../styles/styled';` once move to core\n\n\nconst rootShouldForwardProp = prop => prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as' && prop !== 'classes';\n\nconst LoadingButtonRoot = styled(Button, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiLoadingButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n return [styles.root, styles.startIconLoadingStart && {\n [`& .${loadingButtonClasses.startIconLoadingStart}`]: styles.startIconLoadingStart\n }, styles.endIconLoadingEnd && {\n [`& .${loadingButtonClasses.endIconLoadingEnd}`]: styles.endIconLoadingEnd\n }];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0\n }\n}, ownerState.loadingPosition === 'center' && {\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color'], {\n duration: theme.transitions.duration.short\n }),\n [`&.${loadingButtonClasses.loading}`]: {\n color: 'transparent'\n }\n}, ownerState.loadingPosition === 'start' && ownerState.fullWidth && {\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0,\n marginRight: -8\n }\n}, ownerState.loadingPosition === 'end' && ownerState.fullWidth && {\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0,\n marginLeft: -8\n }\n}));\nconst LoadingButtonLoadingIndicator = styled('div', {\n name: 'MuiLoadingButton',\n slot: 'LoadingIndicator',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.loadingIndicator, styles[`loadingIndicator${capitalize(ownerState.loadingPosition)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n position: 'absolute',\n visibility: 'visible',\n display: 'flex'\n}, ownerState.loadingPosition === 'start' && (ownerState.variant === 'outlined' || ownerState.variant === 'contained') && {\n left: 14\n}, ownerState.loadingPosition === 'start' && ownerState.variant === 'text' && {\n left: 6\n}, ownerState.loadingPosition === 'center' && {\n left: '50%',\n transform: 'translate(-50%)',\n color: theme.palette.action.disabled\n}, ownerState.loadingPosition === 'end' && (ownerState.variant === 'outlined' || ownerState.variant === 'contained') && {\n right: 14\n}, ownerState.loadingPosition === 'end' && ownerState.variant === 'text' && {\n right: 6\n}, ownerState.loadingPosition === 'start' && ownerState.fullWidth && {\n position: 'relative',\n left: -10\n}, ownerState.loadingPosition === 'end' && ownerState.fullWidth && {\n position: 'relative',\n right: -10\n}));\nconst LoadingButton = /*#__PURE__*/React.forwardRef(function LoadingButton(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiLoadingButton'\n });\n\n const {\n children,\n disabled = false,\n id: idProp,\n loading = false,\n loadingIndicator: loadingIndicatorProp,\n loadingPosition = 'center',\n variant = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const id = useId(idProp);\n const loadingIndicator = loadingIndicatorProp != null ? loadingIndicatorProp : /*#__PURE__*/_jsx(CircularProgress, {\n \"aria-labelledby\": id,\n color: \"inherit\",\n size: 16\n });\n\n const ownerState = _extends({}, props, {\n disabled,\n loading,\n loadingIndicator,\n loadingPosition,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(LoadingButtonRoot, _extends({\n disabled: disabled || loading,\n id: id,\n ref: ref\n }, other, {\n variant: variant,\n classes: classes,\n ownerState: ownerState,\n children: ownerState.loadingPosition === 'end' ? /*#__PURE__*/_jsxs(React.Fragment, {\n children: [children, loading && /*#__PURE__*/_jsx(LoadingButtonLoadingIndicator, {\n className: classes.loadingIndicator,\n ownerState: ownerState,\n children: loadingIndicator\n })]\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [loading && /*#__PURE__*/_jsx(LoadingButtonLoadingIndicator, {\n className: classes.loadingIndicator,\n ownerState: ownerState,\n children: loadingIndicator\n }), children]\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? LoadingButton.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * @ignore\n */\n id: PropTypes.string,\n\n /**\n * If `true`, the loading indicator is shown.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Element placed before the children if the button is in loading state.\n * The node should contain an element with `role=\"progressbar\"` with an accessible name.\n * By default we render a `CircularProgress` that is labelled by the button itself.\n * @default \n */\n loadingIndicator: PropTypes.node,\n\n /**\n * The loading indicator can be positioned on the start, end, or the center of the button.\n * @default 'center'\n */\n loadingPosition: chainPropTypes(PropTypes.oneOf(['start', 'end', 'center']), props => {\n if (props.loadingPosition === 'start' && !props.startIcon) {\n return new Error(`MUI: The loadingPosition=\"start\" should be used in combination with startIcon.`);\n }\n\n if (props.loadingPosition === 'end' && !props.endIcon) {\n return new Error(`MUI: The loadingPosition=\"end\" should be used in combination with endIcon.`);\n }\n\n return null;\n }),\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The variant to use.\n * @default 'text'\n */\n variant: PropTypes.oneOf(['contained', 'outlined', 'text'])\n} : void 0;\nexport default LoadingButton;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDialogActionsUtilityClass(slot) {\n return generateUtilityClass('MuiDialogActions', slot);\n}\nconst dialogActionsClasses = generateUtilityClasses('MuiDialogActions', ['root', 'spacing']);\nexport default dialogActionsClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disableSpacing\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDialogActionsUtilityClass } from './dialogActionsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableSpacing\n } = ownerState;\n const slots = {\n root: ['root', !disableSpacing && 'spacing']\n };\n return composeClasses(slots, getDialogActionsUtilityClass, classes);\n};\n\nconst DialogActionsRoot = styled('div', {\n name: 'MuiDialogActions',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disableSpacing && styles.spacing];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'flex',\n alignItems: 'center',\n padding: 8,\n justifyContent: 'flex-end',\n flex: '0 0 auto'\n}, !ownerState.disableSpacing && {\n '& > :not(:first-of-type)': {\n marginLeft: 8\n }\n}));\nconst DialogActions = /*#__PURE__*/React.forwardRef(function DialogActions(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialogActions'\n });\n\n const {\n className,\n disableSpacing = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n disableSpacing\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DialogActionsRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogActions.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the actions do not have additional margin.\n * @default false\n */\n disableSpacing: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogActions;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDialogContentTextUtilityClass(slot) {\n return generateUtilityClass('MuiDialogContentText', slot);\n}\nconst dialogContentTextClasses = generateUtilityClasses('MuiDialogContentText', ['root']);\nexport default dialogContentTextClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Typography from '../Typography';\nimport { getDialogContentTextUtilityClass } from './dialogContentTextClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n const composedClasses = composeClasses(slots, getDialogContentTextUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\n\nconst DialogContentTextRoot = styled(Typography, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiDialogContentText',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\nconst DialogContentText = /*#__PURE__*/React.forwardRef(function DialogContentText(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialogContentText'\n });\n\n const ownerState = _objectWithoutPropertiesLoose(props, _excluded);\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DialogContentTextRoot, _extends({\n component: \"p\",\n variant: \"body1\",\n color: \"text.secondary\",\n ref: ref,\n ownerState: ownerState\n }, props, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogContentText.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogContentText;"],"names":["inputStyles","makeStyles","theme","createStyles","inputFieldStyles","InputField","props","classes","InputProps","withStyles","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","inputLabel","fontWeight","label","onChange","value","id","name","type","autoComplete","disabled","multiline","tooltip","index","error","required","placeholder","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","className","inputProps","container","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","tooltipContainer","title","placement","fullWidth","helperText","inputRebase","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","onSuccess","onError","useState","isLoading","setIsLoading","method","url","data","api","then","res","catch","err","deleteDialogStyles","isOpen","onClose","onCancel","onConfirm","confirmationContent","cancelText","confirmText","confirmButtonProps","cancelButtonProps","titleIcon","open","event","reason","root","sx","padding","titleText","closeContainer","closeButton","content","actions","cancelButton","variant","color","confirmButton","loading","loadingPosition","startIcon","connect","setErrorSnackMessage","deleteOpen","selectedPod","closeDeleteModalAndRefresh","retypePod","setRetypePod","useApi","deleteLoading","invokeDeleteApi","ConfirmDialog","namespace","tenant","errorMessage","detailedError","DialogContentText","Grid","item","xs","InputBoxWrapper","target","connector","state","loadingTenant","tenants","tenantDetails","tenantDetailsStyles","tableStyles","containerForHeader","spacing","match","history","pods","setPods","loadingPods","setLoadingPods","setDeleteOpen","setSelectedPod","tenantName","params","tenantNamespace","podTableActions","pod","push","useEffect","result","i","length","currentTime","Date","now","time","niceDays","parseInt","timeCreated","toString","Fragment","reloadData","sectionTitle","tableBlock","TableWrapper","columns","elementKey","renderFunction","input","records","itemActions","entityName","idField","getLoadingButtonUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","LoadingButtonRoot","styled","Button","shouldForwardProp","prop","rootShouldForwardProp","overridesResolver","styles","startIconLoadingStart","loadingButtonClasses","endIconLoadingEnd","ownerState","_extends","transition","transitions","create","duration","short","opacity","marginRight","marginLeft","LoadingButtonLoadingIndicator","loadingIndicator","capitalize","visibility","display","left","transform","palette","action","React","inProps","ref","useThemeProps","children","idProp","loadingIndicatorProp","other","_objectWithoutPropertiesLoose","useId","_jsx","CircularProgress","slots","endIcon","composedClasses","composeClasses","useUtilityClasses","_jsxs","getDialogActionsUtilityClass","DialogActionsRoot","disableSpacing","alignItems","justifyContent","flex","getDialogContentTextUtilityClass","DialogContentTextRoot","Typography","component"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/js/1719.06e59cd5.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/Hooks/useApi.tsx","screens/Console/Common/ModalWrapper/ConfirmDialog.tsx","screens/Console/Tenants/TenantDetails/DeletePod.tsx","screens/Console/Tenants/TenantDetails/PodsSummary.tsx","../node_modules/@mui/lab/LoadingButton/loadingButtonClasses.js","../node_modules/@mui/lab/LoadingButton/LoadingButton.js","../node_modules/@mui/material/DialogActions/dialogActionsClasses.js","../node_modules/@mui/material/DialogActions/DialogActions.js","../node_modules/@mui/material/DialogContentText/dialogContentTextClasses.js","../node_modules/@mui/material/DialogContentText/DialogContentText.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n })\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","import { useState } from \"react\";\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\n\ntype NoReturnFunction = (param?: any) => void;\ntype ApiMethodToInvoke = (method: string, url: string, data?: any) => void;\ntype IsApiInProgress = boolean;\n\nconst useApi = (\n onSuccess: NoReturnFunction,\n onError: NoReturnFunction\n): [IsApiInProgress, ApiMethodToInvoke] => {\n const [isLoading, setIsLoading] = useState(false);\n\n const callApi = (method: string, url: string, data?: any) => {\n setIsLoading(true);\n api\n .invoke(method, url, data)\n .then((res: any) => {\n setIsLoading(false);\n onSuccess(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setIsLoading(false);\n onError(err);\n });\n };\n\n return [isLoading, callApi];\n};\n\nexport default useApi;\n","import React from \"react\";\nimport {\n Button,\n ButtonProps,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n} from \"@mui/material\";\nimport { LoadingButton } from \"@mui/lab\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { deleteDialogStyles } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n });\n\ntype ConfirmDialogProps = {\n isOpen?: boolean;\n onClose: () => void;\n onCancel?: () => void;\n onConfirm: () => void;\n classes?: any;\n title: string;\n isLoading?: boolean;\n confirmationContent: React.ReactNode | React.ReactNode[];\n cancelText?: string;\n confirmText?: string;\n confirmButtonProps?: Partial;\n cancelButtonProps?: Partial;\n titleIcon?: React.ReactNode;\n};\n\nconst ConfirmDialog = ({\n isOpen = false,\n onClose,\n onCancel,\n onConfirm,\n classes = {},\n title = \"\",\n isLoading,\n confirmationContent,\n cancelText = \"Cancel\",\n confirmText = \"Confirm\",\n confirmButtonProps = {},\n cancelButtonProps = {},\n titleIcon = null,\n}: ConfirmDialogProps) => {\n return (\n \n );\n};\n\nexport default withStyles(styles)(ConfirmDialog);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\nimport { IPodListElement } from \"../ListTenants/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport { connect } from \"react-redux\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"../../../../icons\";\n\ninterface IDeletePod {\n deleteOpen: boolean;\n selectedPod: IPodListElement;\n closeDeleteModalAndRefresh: (refreshList: boolean) => any;\n setErrorSnackMessage: typeof setErrorSnackMessage;\n}\n\nconst DeletePod = ({\n deleteOpen,\n selectedPod,\n closeDeleteModalAndRefresh,\n setErrorSnackMessage,\n}: IDeletePod) => {\n const [retypePod, setRetypePod] = useState(\"\");\n\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => setErrorSnackMessage(err);\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n if (retypePod !== selectedPod.name) {\n setErrorSnackMessage({\n errorMessage: \"Tenant name is incorrect\",\n detailedError: \"\",\n });\n return;\n }\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/namespaces/${selectedPod.namespace}/tenants/${selectedPod.tenant}/pods/${selectedPod.name}`\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypePod !== selectedPod.name || deleteLoading,\n }}\n confirmationContent={\n \n To continue please type {selectedPod.name} in the box.\n \n ) => {\n setRetypePod(event.target.value);\n }}\n label=\"\"\n value={retypePod}\n />\n \n \n }\n />\n );\n};\n\nconst connector = connect(null, {\n setErrorSnackMessage,\n});\n\nexport default connector(DeletePod);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n containerForHeader,\n tableStyles,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { niceDays } from \"../../../../common/utils\";\nimport { IPodListElement } from \"../ListTenants/types\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport api from \"../../../../common/api\";\nimport TableWrapper from \"../../Common/TableWrapper/TableWrapper\";\nimport { AppState } from \"../../../../store\";\nimport { setTenantDetailsLoad } from \"../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport DeletePod from \"./DeletePod\";\nimport { Grid } from \"@mui/material\";\n\ninterface IPodsSummary {\n classes: any;\n match: any;\n history: any;\n loadingTenant: boolean;\n setTenantDetailsLoad: typeof setTenantDetailsLoad;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...tableStyles,\n ...containerForHeader(theme.spacing(4)),\n });\n\nconst PodsSummary = ({\n classes,\n match,\n history,\n loadingTenant,\n}: IPodsSummary) => {\n const [pods, setPods] = useState([]);\n const [loadingPods, setLoadingPods] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedPod, setSelectedPod] = useState(null);\n\n const tenantName = match.params[\"tenantName\"];\n const tenantNamespace = match.params[\"tenantNamespace\"];\n\n const podViewAction = (pod: IPodListElement) => {\n history.push(\n `/namespaces/${tenantNamespace}/tenants/${tenantName}/pods/${pod.name}`\n );\n return;\n };\n\n const closeDeleteModalAndRefresh = (reloadData: boolean) => {\n setDeleteOpen(false);\n setLoadingPods(true);\n };\n\n const confirmDeletePod = (pod: IPodListElement) => {\n pod.tenant = tenantName;\n pod.namespace = tenantNamespace;\n setSelectedPod(pod);\n setDeleteOpen(true);\n };\n\n const podTableActions = [\n { type: \"view\", onClick: podViewAction },\n { type: \"delete\", onClick: confirmDeletePod },\n ];\n\n useEffect(() => {\n if (loadingTenant) {\n setLoadingPods(true);\n }\n }, [loadingTenant]);\n\n useEffect(() => {\n if (loadingPods) {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenantNamespace}/tenants/${tenantName}/pods`\n )\n .then((result: IPodListElement[]) => {\n for (let i = 0; i < result.length; i++) {\n let currentTime = (Date.now() / 1000) | 0;\n result[i].time = niceDays(\n (currentTime - parseInt(result[i].timeCreated)).toString()\n );\n }\n setPods(result);\n setLoadingPods(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage({\n errorMessage: \"Error loading pods\",\n detailedError: err.detailedError,\n });\n });\n }\n }, [loadingPods, tenantName, tenantNamespace]);\n\n return (\n \n {deleteOpen && (\n \n )}\n
Pods
\n \n {\n return input !== null ? input : 0;\n },\n },\n { label: \"Node\", elementKey: \"node\" },\n ]}\n isLoading={loadingPods}\n records={pods}\n itemActions={podTableActions}\n entityName=\"Servers\"\n idField=\"name\"\n />\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.tenantDetails.loadingTenant,\n});\n\nconst connector = connect(mapState, {\n setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(PodsSummary));\n","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getLoadingButtonUtilityClass(slot) {\n return generateUtilityClass('MuiLoadingButton', slot);\n}\nconst loadingButtonClasses = generateUtilityClasses('MuiLoadingButton', ['root', 'loading', 'loadingIndicator', 'loadingIndicatorCenter', 'loadingIndicatorStart', 'loadingIndicatorEnd', 'endIconLoadingEnd', 'startIconLoadingStart']);\nexport default loadingButtonClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"disabled\", \"id\", \"loading\", \"loadingIndicator\", \"loadingPosition\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { chainPropTypes } from '@mui/utils';\nimport { capitalize, unstable_useId as useId } from '@mui/material/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport loadingButtonClasses, { getLoadingButtonUtilityClass } from './loadingButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n loading,\n loadingPosition,\n classes\n } = ownerState;\n const slots = {\n root: ['root', loading && 'loading'],\n startIcon: [loading && `startIconLoading${capitalize(loadingPosition)}`],\n endIcon: [loading && `endIconLoading${capitalize(loadingPosition)}`],\n loadingIndicator: ['loadingIndicator', loading && `loadingIndicator${capitalize(loadingPosition)}`]\n };\n const composedClasses = composeClasses(slots, getLoadingButtonUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n}; // TODO use `import { rootShouldForwardProp } from '../styles/styled';` once move to core\n\n\nconst rootShouldForwardProp = prop => prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as' && prop !== 'classes';\n\nconst LoadingButtonRoot = styled(Button, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiLoadingButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n return [styles.root, styles.startIconLoadingStart && {\n [`& .${loadingButtonClasses.startIconLoadingStart}`]: styles.startIconLoadingStart\n }, styles.endIconLoadingEnd && {\n [`& .${loadingButtonClasses.endIconLoadingEnd}`]: styles.endIconLoadingEnd\n }];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0\n }\n}, ownerState.loadingPosition === 'center' && {\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color'], {\n duration: theme.transitions.duration.short\n }),\n [`&.${loadingButtonClasses.loading}`]: {\n color: 'transparent'\n }\n}, ownerState.loadingPosition === 'start' && ownerState.fullWidth && {\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0,\n marginRight: -8\n }\n}, ownerState.loadingPosition === 'end' && ownerState.fullWidth && {\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0,\n marginLeft: -8\n }\n}));\nconst LoadingButtonLoadingIndicator = styled('div', {\n name: 'MuiLoadingButton',\n slot: 'LoadingIndicator',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.loadingIndicator, styles[`loadingIndicator${capitalize(ownerState.loadingPosition)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n position: 'absolute',\n visibility: 'visible',\n display: 'flex'\n}, ownerState.loadingPosition === 'start' && (ownerState.variant === 'outlined' || ownerState.variant === 'contained') && {\n left: 14\n}, ownerState.loadingPosition === 'start' && ownerState.variant === 'text' && {\n left: 6\n}, ownerState.loadingPosition === 'center' && {\n left: '50%',\n transform: 'translate(-50%)',\n color: theme.palette.action.disabled\n}, ownerState.loadingPosition === 'end' && (ownerState.variant === 'outlined' || ownerState.variant === 'contained') && {\n right: 14\n}, ownerState.loadingPosition === 'end' && ownerState.variant === 'text' && {\n right: 6\n}, ownerState.loadingPosition === 'start' && ownerState.fullWidth && {\n position: 'relative',\n left: -10\n}, ownerState.loadingPosition === 'end' && ownerState.fullWidth && {\n position: 'relative',\n right: -10\n}));\nconst LoadingButton = /*#__PURE__*/React.forwardRef(function LoadingButton(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiLoadingButton'\n });\n\n const {\n children,\n disabled = false,\n id: idProp,\n loading = false,\n loadingIndicator: loadingIndicatorProp,\n loadingPosition = 'center',\n variant = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const id = useId(idProp);\n const loadingIndicator = loadingIndicatorProp != null ? loadingIndicatorProp : /*#__PURE__*/_jsx(CircularProgress, {\n \"aria-labelledby\": id,\n color: \"inherit\",\n size: 16\n });\n\n const ownerState = _extends({}, props, {\n disabled,\n loading,\n loadingIndicator,\n loadingPosition,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(LoadingButtonRoot, _extends({\n disabled: disabled || loading,\n id: id,\n ref: ref\n }, other, {\n variant: variant,\n classes: classes,\n ownerState: ownerState,\n children: ownerState.loadingPosition === 'end' ? /*#__PURE__*/_jsxs(React.Fragment, {\n children: [children, loading && /*#__PURE__*/_jsx(LoadingButtonLoadingIndicator, {\n className: classes.loadingIndicator,\n ownerState: ownerState,\n children: loadingIndicator\n })]\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [loading && /*#__PURE__*/_jsx(LoadingButtonLoadingIndicator, {\n className: classes.loadingIndicator,\n ownerState: ownerState,\n children: loadingIndicator\n }), children]\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? LoadingButton.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * @ignore\n */\n id: PropTypes.string,\n\n /**\n * If `true`, the loading indicator is shown.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Element placed before the children if the button is in loading state.\n * The node should contain an element with `role=\"progressbar\"` with an accessible name.\n * By default we render a `CircularProgress` that is labelled by the button itself.\n * @default \n */\n loadingIndicator: PropTypes.node,\n\n /**\n * The loading indicator can be positioned on the start, end, or the center of the button.\n * @default 'center'\n */\n loadingPosition: chainPropTypes(PropTypes.oneOf(['start', 'end', 'center']), props => {\n if (props.loadingPosition === 'start' && !props.startIcon) {\n return new Error(`MUI: The loadingPosition=\"start\" should be used in combination with startIcon.`);\n }\n\n if (props.loadingPosition === 'end' && !props.endIcon) {\n return new Error(`MUI: The loadingPosition=\"end\" should be used in combination with endIcon.`);\n }\n\n return null;\n }),\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The variant to use.\n * @default 'text'\n */\n variant: PropTypes.oneOf(['contained', 'outlined', 'text'])\n} : void 0;\nexport default LoadingButton;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDialogActionsUtilityClass(slot) {\n return generateUtilityClass('MuiDialogActions', slot);\n}\nconst dialogActionsClasses = generateUtilityClasses('MuiDialogActions', ['root', 'spacing']);\nexport default dialogActionsClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disableSpacing\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDialogActionsUtilityClass } from './dialogActionsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableSpacing\n } = ownerState;\n const slots = {\n root: ['root', !disableSpacing && 'spacing']\n };\n return composeClasses(slots, getDialogActionsUtilityClass, classes);\n};\n\nconst DialogActionsRoot = styled('div', {\n name: 'MuiDialogActions',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disableSpacing && styles.spacing];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'flex',\n alignItems: 'center',\n padding: 8,\n justifyContent: 'flex-end',\n flex: '0 0 auto'\n}, !ownerState.disableSpacing && {\n '& > :not(:first-of-type)': {\n marginLeft: 8\n }\n}));\nconst DialogActions = /*#__PURE__*/React.forwardRef(function DialogActions(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialogActions'\n });\n\n const {\n className,\n disableSpacing = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n disableSpacing\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DialogActionsRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogActions.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the actions do not have additional margin.\n * @default false\n */\n disableSpacing: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogActions;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDialogContentTextUtilityClass(slot) {\n return generateUtilityClass('MuiDialogContentText', slot);\n}\nconst dialogContentTextClasses = generateUtilityClasses('MuiDialogContentText', ['root']);\nexport default dialogContentTextClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Typography from '../Typography';\nimport { getDialogContentTextUtilityClass } from './dialogContentTextClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n const composedClasses = composeClasses(slots, getDialogContentTextUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\n\nconst DialogContentTextRoot = styled(Typography, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiDialogContentText',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\nconst DialogContentText = /*#__PURE__*/React.forwardRef(function DialogContentText(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialogContentText'\n });\n\n const ownerState = _objectWithoutPropertiesLoose(props, _excluded);\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DialogContentTextRoot, _extends({\n component: \"p\",\n variant: \"body1\",\n color: \"text.secondary\",\n ref: ref,\n ownerState: ownerState\n }, props, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogContentText.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogContentText;"],"names":["inputStyles","makeStyles","theme","createStyles","inputFieldStyles","InputField","props","classes","InputProps","withStyles","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","inputLabel","fontWeight","label","onChange","value","id","name","type","autoComplete","disabled","multiline","tooltip","index","error","required","placeholder","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","className","inputProps","container","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","tooltipContainer","title","placement","fullWidth","helperText","inputRebase","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","onSuccess","onError","useState","isLoading","setIsLoading","method","url","data","api","then","res","catch","err","deleteDialogStyles","isOpen","onClose","onCancel","onConfirm","confirmationContent","cancelText","confirmText","confirmButtonProps","cancelButtonProps","titleIcon","open","event","reason","root","sx","padding","titleText","closeContainer","closeButton","content","actions","cancelButton","variant","color","confirmButton","loading","loadingPosition","startIcon","connect","setErrorSnackMessage","deleteOpen","selectedPod","closeDeleteModalAndRefresh","retypePod","setRetypePod","useApi","deleteLoading","invokeDeleteApi","ConfirmDialog","namespace","tenant","errorMessage","detailedError","DialogContentText","Grid","item","xs","InputBoxWrapper","target","connector","state","loadingTenant","tenants","tenantDetails","tenantDetailsStyles","tableStyles","containerForHeader","spacing","match","history","pods","setPods","loadingPods","setLoadingPods","setDeleteOpen","setSelectedPod","tenantName","params","tenantNamespace","podTableActions","pod","push","useEffect","result","i","length","currentTime","Date","now","time","niceDays","parseInt","timeCreated","toString","Fragment","reloadData","sectionTitle","tableBlock","TableWrapper","columns","elementKey","renderFunction","input","records","itemActions","entityName","idField","getLoadingButtonUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","LoadingButtonRoot","styled","Button","shouldForwardProp","prop","rootShouldForwardProp","overridesResolver","styles","startIconLoadingStart","loadingButtonClasses","endIconLoadingEnd","ownerState","_extends","transition","transitions","create","duration","short","opacity","marginRight","marginLeft","LoadingButtonLoadingIndicator","loadingIndicator","capitalize","visibility","display","left","transform","palette","action","React","inProps","ref","useThemeProps","children","idProp","loadingIndicatorProp","other","_objectWithoutPropertiesLoose","useId","_jsx","CircularProgress","slots","endIcon","composedClasses","composeClasses","useUtilityClasses","_jsxs","getDialogActionsUtilityClass","DialogActionsRoot","disableSpacing","alignItems","justifyContent","flex","getDialogContentTextUtilityClass","DialogContentTextRoot","Typography","component"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1971.306de04b.chunk.js b/portal-ui/build/static/js/1971.6d62cf1b.chunk.js
similarity index 98%
rename from portal-ui/build/static/js/1971.306de04b.chunk.js
rename to portal-ui/build/static/js/1971.6d62cf1b.chunk.js
index 016afdd1c..fdb4ac3cb 100644
--- a/portal-ui/build/static/js/1971.306de04b.chunk.js
+++ b/portal-ui/build/static/js/1971.6d62cf1b.chunk.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1971],{76352:function(e,r,t){t.d(r,{Z:function(){return E}});var a,o=t(23430),n=t(18489),s=t(50390),i=t(34424),l=t(95467),c=t(97771),d=t(84402),u=t(78426),m=t(93085),p=t(86509),f=t(4285),g=t(72462),h=t(44149),x=t(38342),C=t.n(x),j=t(92125),Z=t(19538),b=t(21278),v=t(62559),y=function(){clearInterval(a)},k={displayErrorMessage:h.zb},S=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),k)((0,f.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var r=e.classes,t=e.modalSnackMessage,n=e.displayErrorMessage,i=e.customStyle,l=(0,s.useState)(!1),c=(0,o.Z)(l,2),d=c[0],u=c[1],m=(0,s.useState)(!1),p=(0,o.Z)(m,2),f=p[0],g=p[1],h=(0,s.useCallback)((function(){g(!1)}),[]);(0,s.useEffect)((function(){f||(n({detailedError:"",errorMessage:""}),u(!1))}),[n,f]),(0,s.useEffect)((function(){""!==t.message&&"error"===t.type&&g(!0)}),[h,t.message,t.type]);var x=C()(t,"message",""),k=C()(t,"detailedErrorMsg","");return"error"!==t.type||""===x?null:(0,v.jsx)(s.Fragment,{children:(0,v.jsxs)("div",{className:"".concat(r.modalErrorContainer," ").concat(f?r.modalErrorShow:""),style:i,onMouseOver:y,onMouseLeave:function(){a=setInterval(h,1e4)},children:[(0,v.jsx)("button",{className:r.closeButton,onClick:h,children:(0,v.jsx)(b.Z,{})}),(0,v.jsxs)("div",{className:r.errorTitle,children:[(0,v.jsx)("span",{className:r.messageIcon,children:(0,v.jsx)(Z.Z,{})}),(0,v.jsx)("span",{className:r.errorLabel,children:x})]}),""!==k&&(0,v.jsxs)(s.Fragment,{children:[(0,v.jsx)("div",{className:r.detailsContainerLink,children:(0,v.jsxs)("button",{className:r.detailsButton,onClick:function(){u(!d)},children:["Details",(0,v.jsx)(j.Z,{className:"".concat(r.arrowElement," ").concat(d?r.arrowOpen:"")})]})}),(0,v.jsx)("div",{className:"".concat(r.extraDetailsContainer," ").concat(d?r.extraDetailsOpen:""),children:k})]})]})})}))),N=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:h.MK}),E=(0,f.Z)((function(e){return(0,p.Z)((0,n.Z)((0,n.Z)({},g.Qw),{},{root:{"& .MuiPaper-root":{padding:"1rem 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},g.sN))}))(N((function(e){var r=e.onClose,t=e.modalOpen,a=e.title,i=e.children,p=e.classes,f=e.wideLimit,g=void 0===f||f,h=e.modalSnackMessage,x=e.noContentPadding,C=e.setModalSnackMessage,j=e.titleIcon,Z=void 0===j?null:j,y=(0,s.useState)(!1),k=(0,o.Z)(y,2),N=k[0],E=k[1];(0,s.useEffect)((function(){C("")}),[C]),(0,s.useEffect)((function(){if(h){if(""===h.message)return void E(!1);"error"!==h.type&&E(!0)}}),[h]);var M=g?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},w="";return h&&(w=h.detailedErrorMsg,(""===h.detailedErrorMsg||h.detailedErrorMsg.length<5)&&(w=h.message)),(0,v.jsxs)(d.Z,(0,n.Z)((0,n.Z)({open:t,classes:p},M),{},{scroll:"paper",onClose:function(e,t){"backdropClick"!==t&&r()},className:p.root,children:[(0,v.jsxs)(u.Z,{className:p.title,children:[(0,v.jsxs)("div",{className:p.titleText,children:[Z," ",a]}),(0,v.jsx)("div",{className:p.closeContainer,children:(0,v.jsx)(l.Z,{"aria-label":"close",className:p.closeButton,onClick:r,disableRipple:!0,size:"small",children:(0,v.jsx)(b.Z,{})})})]}),(0,v.jsx)(S,{}),(0,v.jsx)(c.Z,{open:N,className:p.snackBarModal,onClose:function(){E(!1),C("")},message:w,ContentProps:{className:"".concat(p.snackBar," ").concat(h&&"error"===h.type?p.errorSnackBar:"")},autoHideDuration:h&&"error"===h.type?1e4:5e3}),(0,v.jsx)(m.Z,{className:x?"":p.content,children:i})]}))})))},1971:function(e,r,t){t.r(r);var a=t(35531),o=t(18489),n=t(25594),s=t(66946),i=t(86509),l=t(4285),c=(t(50390),t(76352)),d=t(17777),u=t(72462),m=t(11387),p=t(62559);r.default=(0,l.Z)((function(e){return(0,i.Z)((0,o.Z)({buttonContainer:{textAlign:"right"},errorsList:{height:"calc(100vh - 280px)"}},u.ID))}))((function(e){var r=e.open,t=e.onCloseFormatErrorsList,o=e.errorsList,i=e.classes;return(0,p.jsx)(c.Z,{modalOpen:r,title:"Format Errors",onClose:t,titleIcon:(0,p.jsx)(m.cn,{}),children:(0,p.jsxs)(n.ZP,{container:!0,children:[(0,p.jsxs)(n.ZP,{item:!0,xs:12,className:i.modalFormScrollable,children:["There were some issues trying to format the selected CSI Drives, please fix the issues and try again.",(0,p.jsx)("br",{}),(0,p.jsx)(d.Z,{columns:[{label:"Node",elementKey:"node"},{label:"Drive",elementKey:"drive"},{label:"Message",elementKey:"error"}],entityName:"Format Errors",idField:"drive",records:o,isLoading:!1,customPaperHeight:i.errorsList,textSelectable:!0,noBackground:!0})]}),(0,p.jsxs)(n.ZP,{item:!0,xs:12,className:i.modalButtonBar,children:[(0,p.jsx)(s.Z,{color:"primary",variant:"outlined",onClick:function(){!function(e,r){var t=document.createElement("a");t.setAttribute("href","data:application/json;charset=utf-8,"+encodeURIComponent(r)),t.setAttribute("download",e),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}("csiFormatErrors.json",JSON.stringify((0,a.Z)(o)))},children:"Download"}),(0,p.jsx)(s.Z,{onClick:t,color:"primary",variant:"contained",autoFocus:!0,children:"Done"})]})]})})}))}}]);
-//# sourceMappingURL=1971.306de04b.chunk.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1971],{76352:function(e,r,t){t.d(r,{Z:function(){return E}});var a,o=t(23430),n=t(18489),s=t(50390),i=t(34424),l=t(95467),c=t(97771),d=t(84402),u=t(78426),m=t(93085),p=t(86509),f=t(4285),g=t(72462),h=t(44149),x=t(38342),C=t.n(x),j=t(92125),Z=t(19538),b=t(21278),v=t(62559),y=function(){clearInterval(a)},k={displayErrorMessage:h.zb},S=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),k)((0,f.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var r=e.classes,t=e.modalSnackMessage,n=e.displayErrorMessage,i=e.customStyle,l=(0,s.useState)(!1),c=(0,o.Z)(l,2),d=c[0],u=c[1],m=(0,s.useState)(!1),p=(0,o.Z)(m,2),f=p[0],g=p[1],h=(0,s.useCallback)((function(){g(!1)}),[]);(0,s.useEffect)((function(){f||(n({detailedError:"",errorMessage:""}),u(!1))}),[n,f]),(0,s.useEffect)((function(){""!==t.message&&"error"===t.type&&g(!0)}),[h,t.message,t.type]);var x=C()(t,"message",""),k=C()(t,"detailedErrorMsg","");return"error"!==t.type||""===x?null:(0,v.jsx)(s.Fragment,{children:(0,v.jsxs)("div",{className:"".concat(r.modalErrorContainer," ").concat(f?r.modalErrorShow:""),style:i,onMouseOver:y,onMouseLeave:function(){a=setInterval(h,1e4)},children:[(0,v.jsx)("button",{className:r.closeButton,onClick:h,children:(0,v.jsx)(b.Z,{})}),(0,v.jsxs)("div",{className:r.errorTitle,children:[(0,v.jsx)("span",{className:r.messageIcon,children:(0,v.jsx)(Z.Z,{})}),(0,v.jsx)("span",{className:r.errorLabel,children:x})]}),""!==k&&(0,v.jsxs)(s.Fragment,{children:[(0,v.jsx)("div",{className:r.detailsContainerLink,children:(0,v.jsxs)("button",{className:r.detailsButton,onClick:function(){u(!d)},children:["Details",(0,v.jsx)(j.Z,{className:"".concat(r.arrowElement," ").concat(d?r.arrowOpen:"")})]})}),(0,v.jsx)("div",{className:"".concat(r.extraDetailsContainer," ").concat(d?r.extraDetailsOpen:""),children:k})]})]})})}))),N=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:h.MK}),E=(0,f.Z)((function(e){return(0,p.Z)((0,n.Z)((0,n.Z)({},g.Qw),{},{root:{"& .MuiPaper-root":{padding:"1rem 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},g.sN))}))(N((function(e){var r=e.onClose,t=e.modalOpen,a=e.title,i=e.children,p=e.classes,f=e.wideLimit,g=void 0===f||f,h=e.modalSnackMessage,x=e.noContentPadding,C=e.setModalSnackMessage,j=e.titleIcon,Z=void 0===j?null:j,y=(0,s.useState)(!1),k=(0,o.Z)(y,2),N=k[0],E=k[1];(0,s.useEffect)((function(){C("")}),[C]),(0,s.useEffect)((function(){if(h){if(""===h.message)return void E(!1);"error"!==h.type&&E(!0)}}),[h]);var M=g?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},w="";return h&&(w=h.detailedErrorMsg,(""===h.detailedErrorMsg||h.detailedErrorMsg.length<5)&&(w=h.message)),(0,v.jsxs)(d.Z,(0,n.Z)((0,n.Z)({open:t,classes:p},M),{},{scroll:"paper",onClose:function(e,t){"backdropClick"!==t&&r()},className:p.root,children:[(0,v.jsxs)(u.Z,{className:p.title,children:[(0,v.jsxs)("div",{className:p.titleText,children:[Z," ",a]}),(0,v.jsx)("div",{className:p.closeContainer,children:(0,v.jsx)(l.Z,{"aria-label":"close",className:p.closeButton,onClick:r,disableRipple:!0,size:"small",children:(0,v.jsx)(b.Z,{})})})]}),(0,v.jsx)(S,{}),(0,v.jsx)(c.Z,{open:N,className:p.snackBarModal,onClose:function(){E(!1),C("")},message:w,ContentProps:{className:"".concat(p.snackBar," ").concat(h&&"error"===h.type?p.errorSnackBar:"")},autoHideDuration:h&&"error"===h.type?1e4:5e3}),(0,v.jsx)(m.Z,{className:x?"":p.content,children:i})]}))})))},1971:function(e,r,t){t.r(r);var a=t(35531),o=t(18489),n=t(25594),s=t(66946),i=t(86509),l=t(4285),c=(t(50390),t(76352)),d=t(17777),u=t(72462),m=t(98280),p=t(62559);r.default=(0,l.Z)((function(e){return(0,i.Z)((0,o.Z)({buttonContainer:{textAlign:"right"},errorsList:{height:"calc(100vh - 280px)"}},u.ID))}))((function(e){var r=e.open,t=e.onCloseFormatErrorsList,o=e.errorsList,i=e.classes;return(0,p.jsx)(c.Z,{modalOpen:r,title:"Format Errors",onClose:t,titleIcon:(0,p.jsx)(m.cn,{}),children:(0,p.jsxs)(n.ZP,{container:!0,children:[(0,p.jsxs)(n.ZP,{item:!0,xs:12,className:i.modalFormScrollable,children:["There were some issues trying to format the selected CSI Drives, please fix the issues and try again.",(0,p.jsx)("br",{}),(0,p.jsx)(d.Z,{columns:[{label:"Node",elementKey:"node"},{label:"Drive",elementKey:"drive"},{label:"Message",elementKey:"error"}],entityName:"Format Errors",idField:"drive",records:o,isLoading:!1,customPaperHeight:i.errorsList,textSelectable:!0,noBackground:!0})]}),(0,p.jsxs)(n.ZP,{item:!0,xs:12,className:i.modalButtonBar,children:[(0,p.jsx)(s.Z,{color:"primary",variant:"outlined",onClick:function(){!function(e,r){var t=document.createElement("a");t.setAttribute("href","data:application/json;charset=utf-8,"+encodeURIComponent(r)),t.setAttribute("download",e),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}("csiFormatErrors.json",JSON.stringify((0,a.Z)(o)))},children:"Download"}),(0,p.jsx)(s.Z,{onClick:t,color:"primary",variant:"contained",autoFocus:!0,children:"Done"})]})]})})}))}}]);
+//# sourceMappingURL=1971.6d62cf1b.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1971.306de04b.chunk.js.map b/portal-ui/build/static/js/1971.6d62cf1b.chunk.js.map
similarity index 99%
rename from portal-ui/build/static/js/1971.306de04b.chunk.js.map
rename to portal-ui/build/static/js/1971.6d62cf1b.chunk.js.map
index 7f3c2a07d..3f0168057 100644
--- a/portal-ui/build/static/js/1971.306de04b.chunk.js.map
+++ b/portal-ui/build/static/js/1971.6d62cf1b.chunk.js.map
@@ -1 +1 @@
-{"version":3,"file":"static/js/1971.306de04b.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/DirectCSI/FormatErrorsResult.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"1rem 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Button, Grid, Theme } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport React from \"react\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport TableWrapper from \"../Common/TableWrapper/TableWrapper\";\nimport { IDirectCSIFormatResItem } from \"./types\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { DriveFormatErrorsIcon } from \"../../../icons\";\n\ninterface IFormatErrorsProps {\n open: boolean;\n onCloseFormatErrorsList: () => void;\n errorsList: IDirectCSIFormatResItem[];\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonContainer: {\n textAlign: \"right\",\n },\n errorsList: {\n height: \"calc(100vh - 280px)\",\n },\n ...modalStyleUtils,\n });\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:application/json;charset=utf-8,\" + encodeURIComponent(text)\n );\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n};\n\nconst FormatErrorsResult = ({\n open,\n onCloseFormatErrorsList,\n errorsList,\n classes,\n}: IFormatErrorsProps) => {\n return (\n }\n >\n \n \n There were some issues trying to format the selected CSI Drives,\n please fix the issues and try again.\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(FormatErrorsResult);\n"],"names":["timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","setModalErrorSnackMessage","connect","state","modalSnackMessage","system","modalSnackBar","withStyles","theme","createStyles","modalErrorContainer","position","marginTop","width","backgroundColor","border","borderLeftWidth","borderRadius","zIndex","padding","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","right","fontSize","cursor","errorTitle","display","alignItems","errorLabel","color","fontWeight","marginLeft","marginRight","messageIcon","height","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","overflow","extraDetailsOpen","arrowElement","arrowOpen","classes","customStyle","useState","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","errorMessage","message","type","get","messageDetails","Fragment","className","style","onMouseOver","onMouseLeave","setInterval","onClick","Close","ErrorOutline","detailsContainerLink","ArrowRight","connector","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","maxWidth","snackBarCommon","onClose","modalOpen","title","children","wideLimit","noContentPadding","titleIcon","openSnackbar","setOpenSnackbar","customSize","paper","fullWidth","detailedErrorMsg","length","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","IconButton","disableRipple","size","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent","buttonContainer","textAlign","errorsList","modalStyleUtils","onCloseFormatErrorsList","container","item","xs","modalFormScrollable","columns","label","elementKey","entityName","idField","records","isLoading","customPaperHeight","textSelectable","noBackground","modalButtonBar","variant","filename","text","element","document","createElement","setAttribute","encodeURIComponent","body","appendChild","click","removeChild","download","JSON","stringify","autoFocus"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/js/1971.6d62cf1b.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/DirectCSI/FormatErrorsResult.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"1rem 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Button, Grid, Theme } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport React from \"react\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport TableWrapper from \"../Common/TableWrapper/TableWrapper\";\nimport { IDirectCSIFormatResItem } from \"./types\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { DriveFormatErrorsIcon } from \"../../../icons\";\n\ninterface IFormatErrorsProps {\n open: boolean;\n onCloseFormatErrorsList: () => void;\n errorsList: IDirectCSIFormatResItem[];\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonContainer: {\n textAlign: \"right\",\n },\n errorsList: {\n height: \"calc(100vh - 280px)\",\n },\n ...modalStyleUtils,\n });\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:application/json;charset=utf-8,\" + encodeURIComponent(text)\n );\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n};\n\nconst FormatErrorsResult = ({\n open,\n onCloseFormatErrorsList,\n errorsList,\n classes,\n}: IFormatErrorsProps) => {\n return (\n }\n >\n \n \n There were some issues trying to format the selected CSI Drives,\n please fix the issues and try again.\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(FormatErrorsResult);\n"],"names":["timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","setModalErrorSnackMessage","connect","state","modalSnackMessage","system","modalSnackBar","withStyles","theme","createStyles","modalErrorContainer","position","marginTop","width","backgroundColor","border","borderLeftWidth","borderRadius","zIndex","padding","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","right","fontSize","cursor","errorTitle","display","alignItems","errorLabel","color","fontWeight","marginLeft","marginRight","messageIcon","height","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","overflow","extraDetailsOpen","arrowElement","arrowOpen","classes","customStyle","useState","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","errorMessage","message","type","get","messageDetails","Fragment","className","style","onMouseOver","onMouseLeave","setInterval","onClick","Close","ErrorOutline","detailsContainerLink","ArrowRight","connector","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","maxWidth","snackBarCommon","onClose","modalOpen","title","children","wideLimit","noContentPadding","titleIcon","openSnackbar","setOpenSnackbar","customSize","paper","fullWidth","detailedErrorMsg","length","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","IconButton","disableRipple","size","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent","buttonContainer","textAlign","errorsList","modalStyleUtils","onCloseFormatErrorsList","container","item","xs","modalFormScrollable","columns","label","elementKey","entityName","idField","records","isLoading","customPaperHeight","textSelectable","noBackground","modalButtonBar","variant","filename","text","element","document","createElement","setAttribute","encodeURIComponent","body","appendChild","click","removeChild","download","JSON","stringify","autoFocus"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1973.34c45ee7.chunk.js b/portal-ui/build/static/js/1973.34c45ee7.chunk.js
new file mode 100644
index 000000000..c865db579
--- /dev/null
+++ b/portal-ui/build/static/js/1973.34c45ee7.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1973],{91973:function(e,n,t){t.r(n),t.d(n,{default:function(){return U}});var i=t(23430),s=t(18489),r=t(50390),o=t(34424),a=t(86509),l=t(4285),c=t(56805),u=t(38342),d=t.n(u),f=t(25594),x=t(44149),p=t(72462),m=t(30324),h=t(77130),Z=t(49495),g=t(15607),v=t(37882),j=t(86458),b=t(1589),E=t(98280),T=t(94113),k=t(28948),S=t(62559),y=function(e){var n=e.bucketSize;return(0,S.jsxs)(c.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{height:37,width:37}},children:[(0,S.jsx)(E.Mh,{}),(0,S.jsxs)(c.Z,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"center",flexFlow:"column",marginLeft:"20px",fontSize:"19px"},children:[(0,S.jsx)("label",{style:{fontWeight:600},children:"Reported Usage:"}),(0,S.jsx)("label",{children:(0,k.ae)(n)})]})]})},C=function(e){var n=e.quota;return(0,S.jsxs)(c.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{height:37,width:37}},children:[(0,S.jsx)(E.sj,{}),(0,S.jsxs)(c.Z,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"center",flexFlow:"column",marginLeft:"20px",fontSize:"19px"},children:[(0,S.jsxs)("label",{style:{fontWeight:600,textTransform:"capitalize"},children:[null===n||void 0===n?void 0:n.type," Quota"]}),(0,S.jsxs)("label",{children:[" ",(0,k.ae)("".concat(null===n||void 0===n?void 0:n.quota))]})]})]})},_=(0,v.Z)(r.lazy((function(){return Promise.all([t.e(14),t.e(5444),t.e(3152),t.e(8954),t.e(3816)]).then(t.bind(t,95239))}))),N=(0,v.Z)(r.lazy((function(){return Promise.all([t.e(14),t.e(2066),t.e(5444),t.e(3152),t.e(9769),t.e(2966)]).then(t.bind(t,82825))}))),I=(0,v.Z)(r.lazy((function(){return Promise.all([t.e(14),t.e(2066),t.e(5444),t.e(3152),t.e(4177)]).then(t.bind(t,44177))}))),P=(0,v.Z)(r.lazy((function(){return Promise.all([t.e(5444),t.e(9679)]).then(t.bind(t,39679))}))),B=(0,v.Z)(r.lazy((function(){return Promise.all([t.e(3360),t.e(8333)]).then(t.bind(t,28333))}))),O=(0,v.Z)(r.lazy((function(){return Promise.all([t.e(14),t.e(2066),t.e(5444),t.e(3152),t.e(9769),t.e(4105),t.e(1711)]).then(t.bind(t,31711))}))),R={display:"grid",gridTemplateColumns:{xs:"1fr",sm:"2fr 1fr"},gridAutoFlow:{xs:"dense",sm:"row"},gap:2},F=(0,o.$j)((function(e){return{session:e.console.session,distributedSetup:e.system.distributedSetup,loadingBucket:e.buckets.bucketDetails.loadingBucket,bucketInfo:e.buckets.bucketDetails.bucketInfo}}),{setErrorSnackMessage:x.Ih,setBucketDetailsLoad:h.d5}),U=(0,l.Z)((function(e){return(0,a.Z)((0,s.Z)((0,s.Z)({},p.bK),p.VI))}))(F((function(e){var n=e.classes,t=e.match,o=e.distributedSetup,a=e.setErrorSnackMessage,l=e.loadingBucket,u=e.bucketInfo,x=e.setBucketDetailsLoad,p=(0,r.useState)(null),h=(0,i.Z)(p,2),v=h[0],k=h[1],F=(0,r.useState)("0"),U=(0,i.Z)(F,2),G=U[0],A=U[1],L=(0,r.useState)(!1),w=(0,i.Z)(L,2),M=w[0],D=w[1],z=(0,r.useState)(!1),K=(0,i.Z)(z,2),V=K[0],Y=K[1],q=(0,r.useState)(!1),Q=(0,i.Z)(q,2),W=Q[0],$=Q[1],J=(0,r.useState)(!0),H=(0,i.Z)(J,2),X=H[0],ee=H[1],ne=(0,r.useState)(!0),te=(0,i.Z)(ne,2),ie=te[0],se=te[1],re=(0,r.useState)(!0),oe=(0,i.Z)(re,2),ae=oe[0],le=oe[1],ce=(0,r.useState)(!0),ue=(0,i.Z)(ce,2),de=ue[0],fe=ue[1],xe=(0,r.useState)(!0),pe=(0,i.Z)(xe,2),me=pe[0],he=pe[1],Ze=(0,r.useState)(!0),ge=(0,i.Z)(Ze,2),ve=ge[0],je=ge[1],be=(0,r.useState)(!0),Ee=(0,i.Z)(be,2),Te=Ee[0],ke=Ee[1],Se=(0,r.useState)(!0),ye=(0,i.Z)(Se,2),Ce=ye[0],_e=ye[1],Ne=(0,r.useState)(!1),Ie=(0,i.Z)(Ne,2),Pe=Ie[0],Be=Ie[1],Oe=(0,r.useState)(!1),Re=(0,i.Z)(Oe,2),Fe=Re[0],Ue=Re[1],Ge=(0,r.useState)(null),Ae=(0,i.Z)(Ge,2),Le=Ae[0],we=Ae[1],Me=(0,r.useState)(!1),De=(0,i.Z)(Me,2),ze=De[0],Ke=De[1],Ve=(0,r.useState)(!1),Ye=(0,i.Z)(Ve,2),qe=Ye[0],Qe=Ye[1],We=(0,r.useState)(null),$e=(0,i.Z)(We,2),Je=$e[0],He=$e[1],Xe=(0,r.useState)(!1),en=(0,i.Z)(Xe,2),nn=en[0],tn=en[1],sn=(0,r.useState)(!1),rn=(0,i.Z)(sn,2),on=rn[0],an=rn[1],ln=(0,r.useState)(!1),cn=(0,i.Z)(ln,2),un=cn[0],dn=cn[1],fn=(0,r.useState)(!1),xn=(0,i.Z)(fn,2),pn=xn[0],mn=xn[1],hn=t.params.bucketName,Zn="n/a",gn="";null!==u&&(Zn=u.access,gn=u.definition);var vn=(0,g.F)(hn,[Z.Ft.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION]),jn=(0,g.F)(hn,[Z.Ft.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION]),bn=(0,g.F)(hn,[Z.Ft.ADMIN_GET_BUCKET_QUOTA]);(0,r.useEffect)((function(){le(!!l)}),[l,le]),(0,r.useEffect)((function(){de&&(jn?m.Z.invoke("GET","/api/v1/buckets/".concat(hn,"/encryption/info")).then((function(e){e.algorithm&&(Ke(!0),k(e)),fe(!1)})).catch((function(e){"The server side encryption configuration was not found"===e.errorMessage&&(Ke(!1),k(null)),fe(!1)})):(Ke(!1),k(null),fe(!1)))}),[de,hn,jn]),(0,r.useEffect)((function(){me&&o&&m.Z.invoke("GET","/api/v1/buckets/".concat(hn,"/versioning")).then((function(e){Be(e.is_versioned),he(!1)})).catch((function(e){a(e),he(!1)}))}),[me,a,hn,o]),(0,r.useEffect)((function(){ve&&o&&(bn?m.Z.invoke("GET","/api/v1/buckets/".concat(hn,"/quota")).then((function(e){we(e),e.quota?Ue(!0):Ue(!1),je(!1)})).catch((function(e){a(e),Ue(!1),je(!1)})):(Ue(!1),je(!1)))}),[ve,he,a,hn,o,bn]),(0,r.useEffect)((function(){me&&o&&(vn?m.Z.invoke("GET","/api/v1/buckets/".concat(hn,"/object-locking")).then((function(e){D(e.object_locking_enabled),ee(!1)})).catch((function(e){a(e),ee(!1)})):ee(!1))}),[X,a,hn,me,o,vn]),(0,r.useEffect)((function(){ie&&m.Z.invoke("GET","/api/v1/buckets").then((function(e){var n=d()(e,"buckets",[]).find((function(e){return e.name===hn})),t=d()(n,"size","0");se(!1),A(t)})).catch((function(e){se(!1),a(e)}))}),[ie,a,hn]),(0,r.useEffect)((function(){Te&&o&&m.Z.invoke("GET","/api/v1/buckets/".concat(hn,"/replication")).then((function(e){var n=e.rules?e.rules:[];$(n.length>0),ke(!1)})).catch((function(e){a(e),ke(!1)}))}),[Te,a,hn,o]),(0,r.useEffect)((function(){Ce&&M&&m.Z.invoke("GET","/api/v1/buckets/".concat(hn,"/retention")).then((function(e){_e(!1),Qe(!0),He(e)})).catch((function(e){Qe(!1),_e(!1),He(null)}))}),[Ce,M,hn]);var En=function(){x(!0),le(!0),se(!0),he(!0),fe(!0),_e(!0)};return(0,S.jsxs)(r.Fragment,{children:[on&&(0,S.jsx)(I,{open:on,selectedBucket:hn,encryptionEnabled:ze,encryptionCfg:v,closeModalAndRefresh:function(){an(!1),fe(!0)}}),un&&(0,S.jsx)(O,{open:un,selectedBucket:hn,enabled:Fe,cfg:Le,closeModalAndRefresh:function(){dn(!1),je(!0)}}),V&&(0,S.jsx)(_,{bucketName:hn,open:V,actualPolicy:Zn,actualDefinition:gn,closeModalAndRefresh:function(){Y(!1),En()}}),nn&&(0,S.jsx)(N,{bucketName:hn,open:nn,closeModalAndRefresh:function(){tn(!1),En()}}),pn&&(0,S.jsx)(P,{closeVersioningModalAndRefresh:function(e){mn(!1),e&&En()},modalOpen:pn,selectedBucket:hn,versioningCurrentState:Pe}),(0,S.jsx)(f.ZP,{container:!0,children:(0,S.jsx)(f.ZP,{item:!0,xs:12,className:n.spacerBottom,children:(0,S.jsx)("h3",{style:{marginTop:"0",marginBottom:"0"},children:"Summary"})})}),(0,S.jsx)(g.Z,{scopes:[Z.Ft.S3_GET_BUCKET_POLICY],resource:hn,children:(0,S.jsxs)(c.Z,{sx:(0,s.Z)({},R),children:[(0,S.jsxs)(c.Z,{sx:(0,s.Z)({},R),children:[(0,S.jsx)(g.Z,{scopes:[Z.Ft.S3_GET_BUCKET_POLICY],resource:hn,children:(0,S.jsx)(T.default,{iamScopes:[Z.Ft.S3_PUT_BUCKET_POLICY],resourceName:hn,property:"Access Policy:",value:Zn.toLowerCase(),onEdit:function(){Y(!0)},isLoading:ae})}),(0,S.jsx)(g.Z,{scopes:[Z.Ft.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION],resource:hn,children:(0,S.jsx)(T.default,{iamScopes:[Z.Ft.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION],resourceName:hn,property:"Encryption:",value:ze?"Enabled":"Disabled",onEdit:function(){an(!0)},isLoading:de})}),(0,S.jsx)(g.Z,{scopes:[Z.Ft.S3_GET_REPLICATION_CONFIGURATION],resource:hn,children:(0,S.jsx)(j.default,{label:"Replication:",value:(0,S.jsx)(b.Z,{icon:W?(0,S.jsx)(E.E3,{}):(0,S.jsx)(E.dR,{}),label:(0,S.jsx)("label",{className:n.textMuted,children:W?"Enabled":"Disabled"})})})}),(0,S.jsx)(g.Z,{scopes:[Z.Ft.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION],resource:hn,children:(0,S.jsx)(j.default,{label:"Object Locking:",value:(0,S.jsx)(b.Z,{icon:M?(0,S.jsx)(E.E3,{}):(0,S.jsx)(E.dR,{}),label:(0,S.jsx)("label",{className:n.textMuted,children:M?"Enabled":"Disabled"})})})}),(0,S.jsx)(c.Z,{className:n.spacerTop,children:(0,S.jsx)(j.default,{label:"Tags:",value:(0,S.jsx)(B,{setErrorSnackMessage:a,bucketName:hn})})})]}),(0,S.jsx)(c.Z,{sx:{display:"grid",gridTemplateColumns:"1fr",alignItems:"flex-start"},children:(0,S.jsx)(y,{bucketSize:G})})]})}),o&&(0,S.jsxs)(g.Z,{scopes:[Z.Ft.S3_GET_BUCKET_VERSIONING],resource:hn,children:[(0,S.jsx)(f.ZP,{container:!0,children:(0,S.jsx)(f.ZP,{item:!0,xs:12,className:n.spacerBottom,children:(0,S.jsx)("h3",{style:{marginTop:"25px",marginBottom:"0"},children:"Versioning"})})}),(0,S.jsxs)(c.Z,{sx:(0,s.Z)({},R),children:[(0,S.jsxs)(c.Z,{sx:(0,s.Z)({},R),children:[(0,S.jsx)(T.default,{iamScopes:[Z.Ft.S3_PUT_BUCKET_VERSIONING],resourceName:hn,property:"Versioning:",value:Pe?"Enabled":"Disabled",onEdit:function(){mn(!0)},isLoading:me}),(0,S.jsx)(T.default,{iamScopes:[Z.Ft.ADMIN_SET_BUCKET_QUOTA],resourceName:hn,property:"Quota:",value:Fe?"Enabled":"Disabled",onEdit:function(){dn(!0)},isLoading:ve})]}),(0,S.jsx)(c.Z,{sx:{display:"grid",gridTemplateColumns:"1fr",alignItems:"flex-start"},children:Fe&&Le?(0,S.jsx)(C,{quota:Le}):null})]})]}),M&&(0,S.jsxs)(g.Z,{scopes:[Z.Ft.S3_GET_OBJECT_RETENTION],resource:hn,children:[(0,S.jsx)(f.ZP,{container:!0,children:(0,S.jsx)(f.ZP,{item:!0,xs:12,className:n.spacerBottom,children:(0,S.jsx)("h3",{style:{marginTop:"25px",marginBottom:"0"},children:"Retention"})})}),(0,S.jsxs)(c.Z,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"2fr 1fr"},gridAutoFlow:{xs:"dense",sm:"row"},gap:2},children:[(0,S.jsxs)(c.Z,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"2fr 1fr"},gridAutoFlow:{xs:"dense",sm:"row"},gap:2},children:[(0,S.jsx)(T.default,{iamScopes:[Z.Ft.ADMIN_SET_BUCKET_QUOTA],resourceName:hn,property:"Retention:",value:qe?"Enabled":"Disabled",onEdit:function(){tn(!0)},isLoading:Ce}),(0,S.jsx)(j.default,{label:"Mode:",value:(0,S.jsx)("label",{className:n.textMuted,style:{textTransform:"capitalize"},children:Je&&Je.mode?Je.mode:"-"})}),(0,S.jsx)(j.default,{label:"Validity:",value:(0,S.jsxs)("label",{className:n.textMuted,style:{textTransform:"capitalize"},children:[Je&&Je.validity," ",Je&&(1===Je.validity?Je.unit.slice(0,-1):Je.unit)]})})]}),(0,S.jsx)(c.Z,{sx:{display:"grid",gridTemplateColumns:"1fr",alignItems:"flex-start"}})]})]})]})})))},94113:function(e,n,t){t.r(n),t.d(n,{default:function(){return j}});var i=t(18489),s=(t(50390),t(86458)),r=t(15607),o=t(83738),a=t(66946),l=t(18201),c=t(62559),u=["isLoading","onClick","label"],d=function(e){var n=e.isLoading,t=e.onClick,s=e.label,r=(0,o.Z)(e,u);return(0,c.jsx)(a.Z,(0,i.Z)((0,i.Z)({color:"primary",onClick:t,variant:"text",sx:{padding:0,margin:0,alignItems:"flex-start",justifyContent:"flex-start",display:"inline-flex",height:"auto",textDecoration:"underline",color:"#2781B0","&:hover":{background:"#ffffff",textDecoration:"underline"}},disableRipple:!0,disableFocusRipple:!0},r),{},{children:n?(0,c.jsx)(l.Z,{color:"primary",size:16,variant:"indeterminate"}):s}))},f=t(56805),x=t(95467),p=t(59078),m=t(86509),h=t(4285),Z=["disabled","onClick"],g=(0,h.Z)((function(e){return(0,m.Z)({root:{"&:hover":{backgroundColor:"#E2E2E2"}}})}))((function(e){var n=e.disabled,t=e.onClick,s=(0,o.Z)(e,Z);return(0,c.jsx)(x.Z,(0,i.Z)((0,i.Z)({size:"small",disabled:n,onClick:t},s),{},{children:(0,c.jsx)(p.Z,{})}))})),v=function(e){var n=e.resourceName,t=e.iamScopes,s=e.secureCmpProps,o=void 0===s?{}:s,a=e.children;return(0,c.jsx)(r.Z,(0,i.Z)((0,i.Z)({scopes:t,resource:n,errorProps:{disabled:!0}},o),{},{children:a}))},j=function(e){var n=e.isLoading,t=void 0===n||n,i=e.resourceName,r=void 0===i?"":i,o=e.iamScopes,a=e.secureCmpProps,l=void 0===a?{}:a,u=e.property,x=void 0===u?null:u,p=e.value,m=void 0===p?null:p,h=e.onEdit;return(0,c.jsxs)(f.Z,{sx:{display:"flex",alignItems:"baseline",justifyContent:"flex-start"},children:[(0,c.jsx)(s.default,{label:x,value:(0,c.jsx)(v,{resourceName:r,iamScopes:o,secureCmpProps:l,children:(0,c.jsx)(d,{isLoading:t,onClick:h,label:m})})}),(0,c.jsx)(v,{resourceName:r,iamScopes:o,secureCmpProps:l,children:(0,c.jsx)(g,{onClick:h,sx:{background:"#f8f8f8",marginLeft:"3px",top:3,"& .min-icon":{width:"16px",height:"16px"}}})})]})}},1589:function(e,n,t){t(50390);var i=t(56805),s=t(62559);n.Z=function(e){var n=e.icon,t=void 0===n?null:n,r=e.label,o=void 0===r?null:r;return(0,s.jsxs)(i.Z,{sx:{display:"flex"},children:[(0,s.jsx)("div",{style:{height:16,width:16,display:"flex",alignItems:"center",marginTop:5},children:t}),(0,s.jsx)("div",{style:{marginLeft:t?5:"none"},children:o})]})}},86458:function(e,n,t){t.r(n);var i=t(18489),s=(t(50390),t(19787)),r=t(62559);n.default=function(e){var n=e.label,t=void 0===n?null:n,o=e.value,a=void 0===o?"-":o,l=e.orientation,c=void 0===l?"column":l,u=e.stkProps,d=void 0===u?{}:u,f=e.lblProps,x=void 0===f?{}:f,p=e.valProps,m=void 0===p?{}:p;return(0,r.jsxs)(s.Z,(0,i.Z)((0,i.Z)({direction:{xs:"column",sm:c}},d),{},{children:[(0,r.jsx)("label",(0,i.Z)((0,i.Z)({style:{marginRight:5,fontWeight:600}},x),{},{children:t})),(0,r.jsx)("label",(0,i.Z)((0,i.Z)({style:{marginRight:5,fontWeight:500}},m),{},{children:a}))]}))}},19787:function(e,n,t){var i=t(36222),s=t(1048),r=t(32793),o=t(50390),a=t(11188),l=t(88646),c=t(99301),u=t(64487),d=t(8208),f=t(15573),x=t(62559),p=["component","direction","spacing","divider","children"];function m(e,n){var t=o.Children.toArray(e).filter(Boolean);return t.reduce((function(e,i,s){return e.push(i),s :not(style) + :not(style)":(0,i.Z)({margin:0},"margin".concat((s=t?d[t]:n.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[s])),(0,l.NA)(o,e))};var s})))}return s})),Z=o.forwardRef((function(e,n){var t=(0,f.Z)({props:e,name:"MuiStack"}),i=(0,c.Z)(t),o=i.component,a=void 0===o?"div":o,l=i.direction,u=void 0===l?"column":l,d=i.spacing,Z=void 0===d?0:d,g=i.divider,v=i.children,j=(0,s.Z)(i,p),b={direction:u,spacing:Z};return(0,x.jsx)(h,(0,r.Z)({as:a,ownerState:b,ref:n},j,{children:g?m(v,g):v}))}));n.Z=Z}}]);
+//# sourceMappingURL=1973.34c45ee7.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1973.55987b98.chunk.js.map b/portal-ui/build/static/js/1973.34c45ee7.chunk.js.map
similarity index 99%
rename from portal-ui/build/static/js/1973.55987b98.chunk.js.map
rename to portal-ui/build/static/js/1973.34c45ee7.chunk.js.map
index ff814d7fb..227a9a7e8 100644
--- a/portal-ui/build/static/js/1973.55987b98.chunk.js.map
+++ b/portal-ui/build/static/js/1973.34c45ee7.chunk.js.map
@@ -1 +1 @@
-{"version":3,"file":"static/js/1973.55987b98.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/SummaryItems/ReportedUsage.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/BucketQuotaSize.tsx","screens/Console/Buckets/BucketDetails/BucketSummaryPanel.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/ActionLink.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/EditActionButton.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/EditablePropertyItem.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/LabelWithIcon.tsx","screens/Console/Common/UsageBarWrapper/LabelValuePair.tsx","../node_modules/@mui/material/Stack/Stack.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { niceBytes } from \"../../../../../common/utils\";\nimport { ReportedUsageFullIcon } from \"../../../../../icons\";\n\nconst ReportedUsage = ({ bucketSize }: { bucketSize: string }) => {\n return (\n \n \n\n \n \n \n \n \n );\n};\n\nexport default ReportedUsage;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { niceBytes } from \"../../../../../common/utils\";\nimport { HardBucketQuotaIcon } from \"../../../../../icons\";\n\nconst BucketQuotaSize = ({ quota }: { quota: any }) => {\n return (\n \n \n\n \n \n \n \n \n );\n};\n\nexport default BucketQuotaSize;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Box } from \"@mui/material\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport { AppState } from \"../../../../store\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport {\n BucketEncryptionInfo,\n BucketInfo,\n BucketObjectLocking,\n BucketQuota,\n BucketReplication,\n BucketVersioning,\n} from \"../types\";\nimport { BucketList } from \"../../Watch/types\";\nimport {\n spacingUtils,\n textStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n ErrorResponseHandler,\n IRetentionConfig,\n} from \"../../../../common/types\";\nimport api from \"../../../../common/api\";\nimport { setBucketDetailsLoad } from \"../actions\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport SecureComponent, {\n hasPermission,\n} from \"../../../../common/SecureComponent/SecureComponent\";\n\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport LabelValuePair from \"../../Common/UsageBarWrapper/LabelValuePair\";\nimport LabelWithIcon from \"./SummaryItems/LabelWithIcon\";\nimport { EnabledIcon, DisabledIcon } from \"../../../../icons\";\nimport EditablePropertyItem from \"./SummaryItems/EditablePropertyItem\";\nimport ReportedUsage from \"./SummaryItems/ReportedUsage\";\nimport BucketQuotaSize from \"./SummaryItems/BucketQuotaSize\";\n\nconst SetAccessPolicy = withSuspense(\n React.lazy(() => import(\"./SetAccessPolicy\"))\n);\nconst SetRetentionConfig = withSuspense(\n React.lazy(() => import(\"./SetRetentionConfig\"))\n);\nconst EnableBucketEncryption = withSuspense(\n React.lazy(() => import(\"./EnableBucketEncryption\"))\n);\nconst EnableVersioningModal = withSuspense(\n React.lazy(() => import(\"./EnableVersioningModal\"))\n);\nconst BucketTags = withSuspense(\n React.lazy(() => import(\"./SummaryItems/BucketTags\"))\n);\n\nconst EnableQuota = withSuspense(React.lazy(() => import(\"./EnableQuota\")));\n\ninterface IBucketSummaryProps {\n classes: any;\n match: any;\n distributedSetup: boolean;\n setErrorSnackMessage: typeof setErrorSnackMessage;\n loadingBucket: boolean;\n bucketInfo: BucketInfo | null;\n setBucketDetailsLoad: typeof setBucketDetailsLoad;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...spacingUtils,\n ...textStyleUtils,\n });\n\nconst twoColCssGridLayoutConfig = {\n display: \"grid\",\n gridTemplateColumns: { xs: \"1fr\", sm: \"2fr 1fr\" },\n gridAutoFlow: { xs: \"dense\", sm: \"row\" },\n gap: 2,\n};\n\nconst BucketSummary = ({\n classes,\n match,\n distributedSetup,\n setErrorSnackMessage,\n loadingBucket,\n bucketInfo,\n setBucketDetailsLoad,\n}: IBucketSummaryProps) => {\n const [encryptionCfg, setEncryptionCfg] =\n useState(null);\n const [bucketSize, setBucketSize] = useState(\"0\");\n const [hasObjectLocking, setHasObjectLocking] = useState(false);\n const [accessPolicyScreenOpen, setAccessPolicyScreenOpen] =\n useState(false);\n const [replicationRules, setReplicationRules] = useState(false);\n const [loadingObjectLocking, setLoadingLocking] = useState(true);\n const [loadingSize, setLoadingSize] = useState(true);\n const [bucketLoading, setBucketLoading] = useState(true);\n const [loadingEncryption, setLoadingEncryption] = useState(true);\n const [loadingVersioning, setLoadingVersioning] = useState(true);\n const [loadingQuota, setLoadingQuota] = useState(true);\n const [loadingReplication, setLoadingReplication] = useState(true);\n const [loadingRetention, setLoadingRetention] = useState(true);\n const [isVersioned, setIsVersioned] = useState(false);\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quota, setQuota] = useState(null);\n const [encryptionEnabled, setEncryptionEnabled] = useState(false);\n const [retentionEnabled, setRetentionEnabled] = useState(false);\n const [retentionConfig, setRetentionConfig] =\n useState(null);\n const [retentionConfigOpen, setRetentionConfigOpen] =\n useState(false);\n const [enableEncryptionScreenOpen, setEnableEncryptionScreenOpen] =\n useState(false);\n const [enableQuotaScreenOpen, setEnableQuotaScreenOpen] =\n useState(false);\n const [enableVersioningOpen, setEnableVersioningOpen] =\n useState(false);\n\n const bucketName = match.params[\"bucketName\"];\n\n let accessPolicy = \"n/a\";\n let policyDefinition = \"\";\n\n if (bucketInfo !== null) {\n accessPolicy = bucketInfo.access;\n policyDefinition = bucketInfo.definition;\n }\n\n const displayGetBucketObjectLockConfiguration = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION,\n ]);\n\n const displayGetBucketEncryptionConfiguration = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,\n ]);\n\n const displayGetBucketQuota = hasPermission(bucketName, [\n IAM_SCOPES.ADMIN_GET_BUCKET_QUOTA,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setBucketLoading(true);\n } else {\n setBucketLoading(false);\n }\n }, [loadingBucket, setBucketLoading]);\n\n useEffect(() => {\n if (loadingEncryption) {\n if (displayGetBucketEncryptionConfiguration) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/encryption/info`)\n .then((res: BucketEncryptionInfo) => {\n if (res.algorithm) {\n setEncryptionEnabled(true);\n setEncryptionCfg(res);\n }\n setLoadingEncryption(false);\n })\n .catch((err: ErrorResponseHandler) => {\n if (\n err.errorMessage ===\n \"The server side encryption configuration was not found\"\n ) {\n setEncryptionEnabled(false);\n setEncryptionCfg(null);\n }\n setLoadingEncryption(false);\n });\n } else {\n setEncryptionEnabled(false);\n setEncryptionCfg(null);\n setLoadingEncryption(false);\n }\n }\n }, [loadingEncryption, bucketName, displayGetBucketEncryptionConfiguration]);\n\n useEffect(() => {\n if (loadingVersioning && distributedSetup) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/versioning`)\n .then((res: BucketVersioning) => {\n setIsVersioned(res.is_versioned);\n setLoadingVersioning(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage(err);\n setLoadingVersioning(false);\n });\n }\n }, [loadingVersioning, setErrorSnackMessage, bucketName, distributedSetup]);\n\n useEffect(() => {\n if (loadingQuota && distributedSetup) {\n if (displayGetBucketQuota) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/quota`)\n .then((res: BucketQuota) => {\n setQuota(res);\n if (res.quota) {\n setQuotaEnabled(true);\n } else {\n setQuotaEnabled(false);\n }\n setLoadingQuota(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage(err);\n setQuotaEnabled(false);\n setLoadingQuota(false);\n });\n } else {\n setQuotaEnabled(false);\n setLoadingQuota(false);\n }\n }\n }, [\n loadingQuota,\n setLoadingVersioning,\n setErrorSnackMessage,\n bucketName,\n distributedSetup,\n displayGetBucketQuota,\n ]);\n\n useEffect(() => {\n if (loadingVersioning && distributedSetup) {\n if (displayGetBucketObjectLockConfiguration) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/object-locking`)\n .then((res: BucketObjectLocking) => {\n setHasObjectLocking(res.object_locking_enabled);\n setLoadingLocking(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage(err);\n setLoadingLocking(false);\n });\n } else {\n setLoadingLocking(false);\n }\n }\n }, [\n loadingObjectLocking,\n setErrorSnackMessage,\n bucketName,\n loadingVersioning,\n distributedSetup,\n displayGetBucketObjectLockConfiguration,\n ]);\n\n useEffect(() => {\n if (loadingSize) {\n api\n .invoke(\"GET\", `/api/v1/buckets`)\n .then((res: BucketList) => {\n const resBuckets = get(res, \"buckets\", []);\n\n const bucketInfo = resBuckets.find(\n (bucket) => bucket.name === bucketName\n );\n\n const size = get(bucketInfo, \"size\", \"0\");\n\n setLoadingSize(false);\n setBucketSize(size);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoadingSize(false);\n setErrorSnackMessage(err);\n });\n }\n }, [loadingSize, setErrorSnackMessage, bucketName]);\n\n useEffect(() => {\n if (loadingReplication && distributedSetup) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/replication`)\n .then((res: BucketReplication) => {\n const r = res.rules ? res.rules : [];\n setReplicationRules(r.length > 0);\n setLoadingReplication(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage(err);\n setLoadingReplication(false);\n });\n }\n }, [loadingReplication, setErrorSnackMessage, bucketName, distributedSetup]);\n\n useEffect(() => {\n if (loadingRetention && hasObjectLocking) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/retention`)\n .then((res: IRetentionConfig) => {\n setLoadingRetention(false);\n setRetentionEnabled(true);\n setRetentionConfig(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setRetentionEnabled(false);\n setLoadingRetention(false);\n setRetentionConfig(null);\n });\n }\n }, [loadingRetention, hasObjectLocking, bucketName]);\n\n const loadAllBucketData = () => {\n setBucketDetailsLoad(true);\n setBucketLoading(true);\n setLoadingSize(true);\n setLoadingVersioning(true);\n setLoadingEncryption(true);\n setLoadingRetention(true);\n };\n\n const setBucketVersioning = () => {\n setEnableVersioningOpen(true);\n };\n const setBucketQuota = () => {\n setEnableQuotaScreenOpen(true);\n };\n\n const closeEnableBucketEncryption = () => {\n setEnableEncryptionScreenOpen(false);\n setLoadingEncryption(true);\n };\n const closeEnableBucketQuota = () => {\n setEnableQuotaScreenOpen(false);\n setLoadingQuota(true);\n };\n\n const closeSetAccessPolicy = () => {\n setAccessPolicyScreenOpen(false);\n loadAllBucketData();\n };\n\n const closeRetentionConfig = () => {\n setRetentionConfigOpen(false);\n loadAllBucketData();\n };\n\n const closeEnableVersioning = (refresh: boolean) => {\n setEnableVersioningOpen(false);\n if (refresh) {\n loadAllBucketData();\n }\n };\n // @ts-ignore\n return (\n \n {enableEncryptionScreenOpen && (\n \n )}\n {enableQuotaScreenOpen && (\n \n )}\n {accessPolicyScreenOpen && (\n \n )}\n {retentionConfigOpen && (\n \n )}\n {enableVersioningOpen && (\n \n )}\n\n \n \n
\n \n \n\n \n \n {\n setRetentionConfigOpen(true);\n }}\n isLoading={loadingRetention}\n />\n\n \n {retentionConfig && retentionConfig.mode\n ? retentionConfig.mode\n : \"-\"}\n \n }\n />\n \n {retentionConfig && retentionConfig.validity}{\" \"}\n {retentionConfig &&\n (retentionConfig.validity === 1\n ? retentionConfig.unit.slice(0, -1)\n : retentionConfig.unit)}\n \n }\n />\n \n\n \n {/*Spacer*/}\n \n \n \n )}\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n session: state.console.session,\n distributedSetup: state.system.distributedSetup,\n loadingBucket: state.buckets.bucketDetails.loadingBucket,\n bucketInfo: state.buckets.bucketDetails.bucketInfo,\n});\n\nconst connector = connect(mapState, {\n setErrorSnackMessage,\n setBucketDetailsLoad,\n});\n\nexport default withStyles(styles)(connector(BucketSummary));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button, CircularProgress } from \"@mui/material\";\n\ntype ActionLinkProps = {\n isLoading: boolean;\n onClick: () => void;\n classes?: any;\n label: any;\n [x: string]: any;\n};\nconst ActionLink = ({\n isLoading,\n onClick,\n label,\n ...restProps\n}: ActionLinkProps) => {\n return (\n \n );\n};\n\nexport default ActionLink;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { IconButton } from \"@mui/material\";\nimport EditIcon from \"../../../../../icons/EditIcon\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\ntype EditActionButtonProps = {\n disabled?: boolean;\n onClick: () => void | any;\n [x: string]: any;\n};\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n \"&:hover\": {\n backgroundColor: \"#E2E2E2\",\n },\n },\n });\n\nconst EditActionButton = ({\n disabled,\n onClick,\n ...restProps\n}: EditActionButtonProps) => {\n return (\n \n \n \n );\n};\n\nexport default withStyles(styles)(EditActionButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport LabelValuePair from \"../../../Common/UsageBarWrapper/LabelValuePair\";\nimport SecureComponent from \"../../../../../common/SecureComponent/SecureComponent\";\nimport ActionLink from \"./ActionLink\";\nimport { Box } from \"@mui/material\";\nimport EditActionButton from \"./EditActionButton\";\n\ntype EditablePropertyItemProps = {\n isLoading: boolean;\n resourceName: string;\n iamScopes: string[];\n property: any;\n value: any;\n onEdit: () => void;\n secureCmpProps?: Record;\n};\n\nconst SecureAction = ({\n resourceName,\n iamScopes,\n secureCmpProps = {},\n children,\n}: {\n resourceName: string;\n iamScopes: string[];\n children: any;\n secureCmpProps?: Record;\n}) => {\n return (\n \n {children}\n \n );\n};\n\nconst EditablePropertyItem = ({\n isLoading = true,\n resourceName = \"\",\n iamScopes,\n secureCmpProps = {},\n property = null,\n value = null,\n onEdit,\n}: EditablePropertyItemProps) => {\n return (\n \n \n \n \n }\n />\n \n \n \n \n );\n};\n\nexport default EditablePropertyItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\n\ntype LabelWithIconProps = {\n icon: React.ReactNode | null;\n label: React.ReactNode | null;\n};\n\nconst LabelWithIcon = ({ icon = null, label = null }: LabelWithIconProps) => {\n return (\n \n
\n {icon}\n
\n
{label}
\n \n );\n};\n\nexport default LabelWithIcon;\n","import React from \"react\";\nimport { Stack } from \"@mui/material\";\n\ntype LabelValuePairProps = {\n label?: any;\n value?: any;\n orientation?: any;\n stkProps?: any;\n lblProps?: any;\n valProps?: any;\n};\n\nconst LabelValuePair = ({\n label = null,\n value = \"-\",\n orientation = \"column\",\n stkProps = {},\n lblProps = {},\n valProps = {},\n}: LabelValuePairProps) => {\n return (\n \n \n \n \n );\n};\n\nexport default LabelValuePair;\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { createUnarySpacing, getValue, handleBreakpoints, unstable_extendSxProp as extendSxProp, unstable_resolveBreakpointValues as resolveBreakpointValues } from '@mui/system';\nimport { deepmerge } from '@mui/utils';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction joinChildren(children, separator) {\n const childrenArray = React.Children.toArray(children).filter(Boolean);\n return childrenArray.reduce((output, child, index) => {\n output.push(child);\n\n if (index < childrenArray.length - 1) {\n output.push( /*#__PURE__*/React.cloneElement(separator, {\n key: `separator-${index}`\n }));\n }\n\n return output;\n }, []);\n}\n\nconst getSideFromDirection = direction => {\n return {\n row: 'Left',\n 'row-reverse': 'Right',\n column: 'Top',\n 'column-reverse': 'Bottom'\n }[direction];\n};\n\nexport const style = ({\n ownerState,\n theme\n}) => {\n let styles = _extends({\n display: 'flex'\n }, handleBreakpoints({\n theme\n }, resolveBreakpointValues({\n values: ownerState.direction,\n breakpoints: theme.breakpoints.values\n }), propValue => ({\n flexDirection: propValue\n })));\n\n if (ownerState.spacing) {\n const transformer = createUnarySpacing(theme);\n const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n if (ownerState.spacing[breakpoint] != null || ownerState.direction[breakpoint] != null) {\n acc[breakpoint] = true;\n }\n\n return acc;\n }, {});\n const directionValues = resolveBreakpointValues({\n values: ownerState.direction,\n base\n });\n const spacingValues = resolveBreakpointValues({\n values: ownerState.spacing,\n base\n });\n\n const styleFromPropValue = (propValue, breakpoint) => {\n return {\n '& > :not(style) + :not(style)': {\n margin: 0,\n [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n }\n };\n };\n\n styles = deepmerge(styles, handleBreakpoints({\n theme\n }, spacingValues, styleFromPropValue));\n }\n\n return styles;\n};\nconst StackRoot = styled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n return [styles.root];\n }\n})(style);\nconst Stack = /*#__PURE__*/React.forwardRef(function Stack(inProps, ref) {\n const themeProps = useThemeProps({\n props: inProps,\n name: 'MuiStack'\n });\n const props = extendSxProp(themeProps);\n\n const {\n component = 'div',\n direction = 'column',\n spacing = 0,\n divider,\n children\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = {\n direction,\n spacing\n };\n return /*#__PURE__*/_jsx(StackRoot, _extends({\n as: component,\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: divider ? joinChildren(children, divider) : children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * Defines the `flex-direction` style property.\n * It is applied for all screen sizes.\n * @default 'column'\n */\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n\n /**\n * Add an element between each child.\n */\n divider: PropTypes.node,\n\n /**\n * Defines the space between immediate children.\n * @default 0\n */\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n\n /**\n * The system prop, which allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Stack;"],"names":["bucketSize","Box","sx","display","alignItems","height","width","justifyContent","flexFlow","marginLeft","fontSize","style","fontWeight","niceBytes","quota","textTransform","type","SetAccessPolicy","withSuspense","React","SetRetentionConfig","EnableBucketEncryption","EnableVersioningModal","BucketTags","EnableQuota","twoColCssGridLayoutConfig","gridTemplateColumns","xs","sm","gridAutoFlow","gap","connector","connect","state","session","console","distributedSetup","system","loadingBucket","buckets","bucketDetails","bucketInfo","setErrorSnackMessage","setBucketDetailsLoad","withStyles","theme","createStyles","spacingUtils","textStyleUtils","classes","match","useState","encryptionCfg","setEncryptionCfg","setBucketSize","hasObjectLocking","setHasObjectLocking","accessPolicyScreenOpen","setAccessPolicyScreenOpen","replicationRules","setReplicationRules","loadingObjectLocking","setLoadingLocking","loadingSize","setLoadingSize","bucketLoading","setBucketLoading","loadingEncryption","setLoadingEncryption","loadingVersioning","setLoadingVersioning","loadingQuota","setLoadingQuota","loadingReplication","setLoadingReplication","loadingRetention","setLoadingRetention","isVersioned","setIsVersioned","quotaEnabled","setQuotaEnabled","setQuota","encryptionEnabled","setEncryptionEnabled","retentionEnabled","setRetentionEnabled","retentionConfig","setRetentionConfig","retentionConfigOpen","setRetentionConfigOpen","enableEncryptionScreenOpen","setEnableEncryptionScreenOpen","enableQuotaScreenOpen","setEnableQuotaScreenOpen","enableVersioningOpen","setEnableVersioningOpen","bucketName","params","accessPolicy","policyDefinition","access","definition","displayGetBucketObjectLockConfiguration","hasPermission","IAM_SCOPES","displayGetBucketEncryptionConfiguration","displayGetBucketQuota","useEffect","api","then","res","algorithm","catch","err","errorMessage","is_versioned","object_locking_enabled","get","find","bucket","name","size","r","rules","length","loadAllBucketData","Fragment","open","selectedBucket","closeModalAndRefresh","enabled","cfg","actualPolicy","actualDefinition","closeVersioningModalAndRefresh","refresh","modalOpen","versioningCurrentState","Grid","container","item","className","spacerBottom","marginTop","marginBottom","SecureComponent","scopes","resource","EditablePropertyItem","iamScopes","resourceName","property","value","toLowerCase","onEdit","isLoading","LabelValuePair","label","LabelWithIcon","icon","textMuted","spacerTop","mode","validity","unit","slice","onClick","restProps","Button","color","variant","padding","margin","textDecoration","background","disableRipple","disableFocusRipple","CircularProgress","root","backgroundColor","disabled","IconButton","EditIcon","SecureAction","secureCmpProps","children","errorProps","top","orientation","stkProps","lblProps","valProps","direction","marginRight","_excluded","joinChildren","separator","childrenArray","filter","Boolean","reduce","output","child","index","push","key","StackRoot","styled","slot","overridesResolver","props","styles","ownerState","_extends","handleBreakpoints","resolveBreakpointValues","values","breakpoints","propValue","flexDirection","spacing","transformer","createUnarySpacing","base","Object","keys","acc","breakpoint","directionValues","spacingValues","deepmerge","row","column","getValue","Stack","inProps","ref","themeProps","useThemeProps","extendSxProp","component","divider","other","_objectWithoutPropertiesLoose","_jsx","as"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/js/1973.34c45ee7.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/SummaryItems/ReportedUsage.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/BucketQuotaSize.tsx","screens/Console/Buckets/BucketDetails/BucketSummaryPanel.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/ActionLink.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/EditActionButton.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/EditablePropertyItem.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/LabelWithIcon.tsx","screens/Console/Common/UsageBarWrapper/LabelValuePair.tsx","../node_modules/@mui/material/Stack/Stack.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { niceBytes } from \"../../../../../common/utils\";\nimport { ReportedUsageFullIcon } from \"../../../../../icons\";\n\nconst ReportedUsage = ({ bucketSize }: { bucketSize: string }) => {\n return (\n \n \n\n \n \n \n \n \n );\n};\n\nexport default ReportedUsage;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { niceBytes } from \"../../../../../common/utils\";\nimport { HardBucketQuotaIcon } from \"../../../../../icons\";\n\nconst BucketQuotaSize = ({ quota }: { quota: any }) => {\n return (\n \n \n\n \n \n \n \n \n );\n};\n\nexport default BucketQuotaSize;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Box } from \"@mui/material\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport { AppState } from \"../../../../store\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport {\n BucketEncryptionInfo,\n BucketInfo,\n BucketObjectLocking,\n BucketQuota,\n BucketReplication,\n BucketVersioning,\n} from \"../types\";\nimport { BucketList } from \"../../Watch/types\";\nimport {\n spacingUtils,\n textStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n ErrorResponseHandler,\n IRetentionConfig,\n} from \"../../../../common/types\";\nimport api from \"../../../../common/api\";\nimport { setBucketDetailsLoad } from \"../actions\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport SecureComponent, {\n hasPermission,\n} from \"../../../../common/SecureComponent/SecureComponent\";\n\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport LabelValuePair from \"../../Common/UsageBarWrapper/LabelValuePair\";\nimport LabelWithIcon from \"./SummaryItems/LabelWithIcon\";\nimport { EnabledIcon, DisabledIcon } from \"../../../../icons\";\nimport EditablePropertyItem from \"./SummaryItems/EditablePropertyItem\";\nimport ReportedUsage from \"./SummaryItems/ReportedUsage\";\nimport BucketQuotaSize from \"./SummaryItems/BucketQuotaSize\";\n\nconst SetAccessPolicy = withSuspense(\n React.lazy(() => import(\"./SetAccessPolicy\"))\n);\nconst SetRetentionConfig = withSuspense(\n React.lazy(() => import(\"./SetRetentionConfig\"))\n);\nconst EnableBucketEncryption = withSuspense(\n React.lazy(() => import(\"./EnableBucketEncryption\"))\n);\nconst EnableVersioningModal = withSuspense(\n React.lazy(() => import(\"./EnableVersioningModal\"))\n);\nconst BucketTags = withSuspense(\n React.lazy(() => import(\"./SummaryItems/BucketTags\"))\n);\n\nconst EnableQuota = withSuspense(React.lazy(() => import(\"./EnableQuota\")));\n\ninterface IBucketSummaryProps {\n classes: any;\n match: any;\n distributedSetup: boolean;\n setErrorSnackMessage: typeof setErrorSnackMessage;\n loadingBucket: boolean;\n bucketInfo: BucketInfo | null;\n setBucketDetailsLoad: typeof setBucketDetailsLoad;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...spacingUtils,\n ...textStyleUtils,\n });\n\nconst twoColCssGridLayoutConfig = {\n display: \"grid\",\n gridTemplateColumns: { xs: \"1fr\", sm: \"2fr 1fr\" },\n gridAutoFlow: { xs: \"dense\", sm: \"row\" },\n gap: 2,\n};\n\nconst BucketSummary = ({\n classes,\n match,\n distributedSetup,\n setErrorSnackMessage,\n loadingBucket,\n bucketInfo,\n setBucketDetailsLoad,\n}: IBucketSummaryProps) => {\n const [encryptionCfg, setEncryptionCfg] =\n useState(null);\n const [bucketSize, setBucketSize] = useState(\"0\");\n const [hasObjectLocking, setHasObjectLocking] = useState(false);\n const [accessPolicyScreenOpen, setAccessPolicyScreenOpen] =\n useState(false);\n const [replicationRules, setReplicationRules] = useState(false);\n const [loadingObjectLocking, setLoadingLocking] = useState(true);\n const [loadingSize, setLoadingSize] = useState(true);\n const [bucketLoading, setBucketLoading] = useState(true);\n const [loadingEncryption, setLoadingEncryption] = useState(true);\n const [loadingVersioning, setLoadingVersioning] = useState(true);\n const [loadingQuota, setLoadingQuota] = useState(true);\n const [loadingReplication, setLoadingReplication] = useState(true);\n const [loadingRetention, setLoadingRetention] = useState(true);\n const [isVersioned, setIsVersioned] = useState(false);\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quota, setQuota] = useState(null);\n const [encryptionEnabled, setEncryptionEnabled] = useState(false);\n const [retentionEnabled, setRetentionEnabled] = useState(false);\n const [retentionConfig, setRetentionConfig] =\n useState(null);\n const [retentionConfigOpen, setRetentionConfigOpen] =\n useState(false);\n const [enableEncryptionScreenOpen, setEnableEncryptionScreenOpen] =\n useState(false);\n const [enableQuotaScreenOpen, setEnableQuotaScreenOpen] =\n useState(false);\n const [enableVersioningOpen, setEnableVersioningOpen] =\n useState(false);\n\n const bucketName = match.params[\"bucketName\"];\n\n let accessPolicy = \"n/a\";\n let policyDefinition = \"\";\n\n if (bucketInfo !== null) {\n accessPolicy = bucketInfo.access;\n policyDefinition = bucketInfo.definition;\n }\n\n const displayGetBucketObjectLockConfiguration = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION,\n ]);\n\n const displayGetBucketEncryptionConfiguration = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,\n ]);\n\n const displayGetBucketQuota = hasPermission(bucketName, [\n IAM_SCOPES.ADMIN_GET_BUCKET_QUOTA,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setBucketLoading(true);\n } else {\n setBucketLoading(false);\n }\n }, [loadingBucket, setBucketLoading]);\n\n useEffect(() => {\n if (loadingEncryption) {\n if (displayGetBucketEncryptionConfiguration) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/encryption/info`)\n .then((res: BucketEncryptionInfo) => {\n if (res.algorithm) {\n setEncryptionEnabled(true);\n setEncryptionCfg(res);\n }\n setLoadingEncryption(false);\n })\n .catch((err: ErrorResponseHandler) => {\n if (\n err.errorMessage ===\n \"The server side encryption configuration was not found\"\n ) {\n setEncryptionEnabled(false);\n setEncryptionCfg(null);\n }\n setLoadingEncryption(false);\n });\n } else {\n setEncryptionEnabled(false);\n setEncryptionCfg(null);\n setLoadingEncryption(false);\n }\n }\n }, [loadingEncryption, bucketName, displayGetBucketEncryptionConfiguration]);\n\n useEffect(() => {\n if (loadingVersioning && distributedSetup) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/versioning`)\n .then((res: BucketVersioning) => {\n setIsVersioned(res.is_versioned);\n setLoadingVersioning(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage(err);\n setLoadingVersioning(false);\n });\n }\n }, [loadingVersioning, setErrorSnackMessage, bucketName, distributedSetup]);\n\n useEffect(() => {\n if (loadingQuota && distributedSetup) {\n if (displayGetBucketQuota) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/quota`)\n .then((res: BucketQuota) => {\n setQuota(res);\n if (res.quota) {\n setQuotaEnabled(true);\n } else {\n setQuotaEnabled(false);\n }\n setLoadingQuota(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage(err);\n setQuotaEnabled(false);\n setLoadingQuota(false);\n });\n } else {\n setQuotaEnabled(false);\n setLoadingQuota(false);\n }\n }\n }, [\n loadingQuota,\n setLoadingVersioning,\n setErrorSnackMessage,\n bucketName,\n distributedSetup,\n displayGetBucketQuota,\n ]);\n\n useEffect(() => {\n if (loadingVersioning && distributedSetup) {\n if (displayGetBucketObjectLockConfiguration) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/object-locking`)\n .then((res: BucketObjectLocking) => {\n setHasObjectLocking(res.object_locking_enabled);\n setLoadingLocking(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage(err);\n setLoadingLocking(false);\n });\n } else {\n setLoadingLocking(false);\n }\n }\n }, [\n loadingObjectLocking,\n setErrorSnackMessage,\n bucketName,\n loadingVersioning,\n distributedSetup,\n displayGetBucketObjectLockConfiguration,\n ]);\n\n useEffect(() => {\n if (loadingSize) {\n api\n .invoke(\"GET\", `/api/v1/buckets`)\n .then((res: BucketList) => {\n const resBuckets = get(res, \"buckets\", []);\n\n const bucketInfo = resBuckets.find(\n (bucket) => bucket.name === bucketName\n );\n\n const size = get(bucketInfo, \"size\", \"0\");\n\n setLoadingSize(false);\n setBucketSize(size);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoadingSize(false);\n setErrorSnackMessage(err);\n });\n }\n }, [loadingSize, setErrorSnackMessage, bucketName]);\n\n useEffect(() => {\n if (loadingReplication && distributedSetup) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/replication`)\n .then((res: BucketReplication) => {\n const r = res.rules ? res.rules : [];\n setReplicationRules(r.length > 0);\n setLoadingReplication(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage(err);\n setLoadingReplication(false);\n });\n }\n }, [loadingReplication, setErrorSnackMessage, bucketName, distributedSetup]);\n\n useEffect(() => {\n if (loadingRetention && hasObjectLocking) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/retention`)\n .then((res: IRetentionConfig) => {\n setLoadingRetention(false);\n setRetentionEnabled(true);\n setRetentionConfig(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setRetentionEnabled(false);\n setLoadingRetention(false);\n setRetentionConfig(null);\n });\n }\n }, [loadingRetention, hasObjectLocking, bucketName]);\n\n const loadAllBucketData = () => {\n setBucketDetailsLoad(true);\n setBucketLoading(true);\n setLoadingSize(true);\n setLoadingVersioning(true);\n setLoadingEncryption(true);\n setLoadingRetention(true);\n };\n\n const setBucketVersioning = () => {\n setEnableVersioningOpen(true);\n };\n const setBucketQuota = () => {\n setEnableQuotaScreenOpen(true);\n };\n\n const closeEnableBucketEncryption = () => {\n setEnableEncryptionScreenOpen(false);\n setLoadingEncryption(true);\n };\n const closeEnableBucketQuota = () => {\n setEnableQuotaScreenOpen(false);\n setLoadingQuota(true);\n };\n\n const closeSetAccessPolicy = () => {\n setAccessPolicyScreenOpen(false);\n loadAllBucketData();\n };\n\n const closeRetentionConfig = () => {\n setRetentionConfigOpen(false);\n loadAllBucketData();\n };\n\n const closeEnableVersioning = (refresh: boolean) => {\n setEnableVersioningOpen(false);\n if (refresh) {\n loadAllBucketData();\n }\n };\n // @ts-ignore\n return (\n \n {enableEncryptionScreenOpen && (\n \n )}\n {enableQuotaScreenOpen && (\n \n )}\n {accessPolicyScreenOpen && (\n \n )}\n {retentionConfigOpen && (\n \n )}\n {enableVersioningOpen && (\n \n )}\n\n \n \n
\n \n \n\n \n \n {\n setRetentionConfigOpen(true);\n }}\n isLoading={loadingRetention}\n />\n\n \n {retentionConfig && retentionConfig.mode\n ? retentionConfig.mode\n : \"-\"}\n \n }\n />\n \n {retentionConfig && retentionConfig.validity}{\" \"}\n {retentionConfig &&\n (retentionConfig.validity === 1\n ? retentionConfig.unit.slice(0, -1)\n : retentionConfig.unit)}\n \n }\n />\n \n\n \n {/*Spacer*/}\n \n \n \n )}\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n session: state.console.session,\n distributedSetup: state.system.distributedSetup,\n loadingBucket: state.buckets.bucketDetails.loadingBucket,\n bucketInfo: state.buckets.bucketDetails.bucketInfo,\n});\n\nconst connector = connect(mapState, {\n setErrorSnackMessage,\n setBucketDetailsLoad,\n});\n\nexport default withStyles(styles)(connector(BucketSummary));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button, CircularProgress } from \"@mui/material\";\n\ntype ActionLinkProps = {\n isLoading: boolean;\n onClick: () => void;\n classes?: any;\n label: any;\n [x: string]: any;\n};\nconst ActionLink = ({\n isLoading,\n onClick,\n label,\n ...restProps\n}: ActionLinkProps) => {\n return (\n \n );\n};\n\nexport default ActionLink;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { IconButton } from \"@mui/material\";\nimport EditIcon from \"../../../../../icons/EditIcon\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\ntype EditActionButtonProps = {\n disabled?: boolean;\n onClick: () => void | any;\n [x: string]: any;\n};\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n \"&:hover\": {\n backgroundColor: \"#E2E2E2\",\n },\n },\n });\n\nconst EditActionButton = ({\n disabled,\n onClick,\n ...restProps\n}: EditActionButtonProps) => {\n return (\n \n \n \n );\n};\n\nexport default withStyles(styles)(EditActionButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport LabelValuePair from \"../../../Common/UsageBarWrapper/LabelValuePair\";\nimport SecureComponent from \"../../../../../common/SecureComponent/SecureComponent\";\nimport ActionLink from \"./ActionLink\";\nimport { Box } from \"@mui/material\";\nimport EditActionButton from \"./EditActionButton\";\n\ntype EditablePropertyItemProps = {\n isLoading: boolean;\n resourceName: string;\n iamScopes: string[];\n property: any;\n value: any;\n onEdit: () => void;\n secureCmpProps?: Record;\n};\n\nconst SecureAction = ({\n resourceName,\n iamScopes,\n secureCmpProps = {},\n children,\n}: {\n resourceName: string;\n iamScopes: string[];\n children: any;\n secureCmpProps?: Record;\n}) => {\n return (\n \n {children}\n \n );\n};\n\nconst EditablePropertyItem = ({\n isLoading = true,\n resourceName = \"\",\n iamScopes,\n secureCmpProps = {},\n property = null,\n value = null,\n onEdit,\n}: EditablePropertyItemProps) => {\n return (\n \n \n \n \n }\n />\n \n \n \n \n );\n};\n\nexport default EditablePropertyItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\n\ntype LabelWithIconProps = {\n icon: React.ReactNode | null;\n label: React.ReactNode | null;\n};\n\nconst LabelWithIcon = ({ icon = null, label = null }: LabelWithIconProps) => {\n return (\n \n
\n {icon}\n
\n
{label}
\n \n );\n};\n\nexport default LabelWithIcon;\n","import React from \"react\";\nimport { Stack } from \"@mui/material\";\n\ntype LabelValuePairProps = {\n label?: any;\n value?: any;\n orientation?: any;\n stkProps?: any;\n lblProps?: any;\n valProps?: any;\n};\n\nconst LabelValuePair = ({\n label = null,\n value = \"-\",\n orientation = \"column\",\n stkProps = {},\n lblProps = {},\n valProps = {},\n}: LabelValuePairProps) => {\n return (\n \n \n \n \n );\n};\n\nexport default LabelValuePair;\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { createUnarySpacing, getValue, handleBreakpoints, unstable_extendSxProp as extendSxProp, unstable_resolveBreakpointValues as resolveBreakpointValues } from '@mui/system';\nimport { deepmerge } from '@mui/utils';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction joinChildren(children, separator) {\n const childrenArray = React.Children.toArray(children).filter(Boolean);\n return childrenArray.reduce((output, child, index) => {\n output.push(child);\n\n if (index < childrenArray.length - 1) {\n output.push( /*#__PURE__*/React.cloneElement(separator, {\n key: `separator-${index}`\n }));\n }\n\n return output;\n }, []);\n}\n\nconst getSideFromDirection = direction => {\n return {\n row: 'Left',\n 'row-reverse': 'Right',\n column: 'Top',\n 'column-reverse': 'Bottom'\n }[direction];\n};\n\nexport const style = ({\n ownerState,\n theme\n}) => {\n let styles = _extends({\n display: 'flex'\n }, handleBreakpoints({\n theme\n }, resolveBreakpointValues({\n values: ownerState.direction,\n breakpoints: theme.breakpoints.values\n }), propValue => ({\n flexDirection: propValue\n })));\n\n if (ownerState.spacing) {\n const transformer = createUnarySpacing(theme);\n const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n if (ownerState.spacing[breakpoint] != null || ownerState.direction[breakpoint] != null) {\n acc[breakpoint] = true;\n }\n\n return acc;\n }, {});\n const directionValues = resolveBreakpointValues({\n values: ownerState.direction,\n base\n });\n const spacingValues = resolveBreakpointValues({\n values: ownerState.spacing,\n base\n });\n\n const styleFromPropValue = (propValue, breakpoint) => {\n return {\n '& > :not(style) + :not(style)': {\n margin: 0,\n [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n }\n };\n };\n\n styles = deepmerge(styles, handleBreakpoints({\n theme\n }, spacingValues, styleFromPropValue));\n }\n\n return styles;\n};\nconst StackRoot = styled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n return [styles.root];\n }\n})(style);\nconst Stack = /*#__PURE__*/React.forwardRef(function Stack(inProps, ref) {\n const themeProps = useThemeProps({\n props: inProps,\n name: 'MuiStack'\n });\n const props = extendSxProp(themeProps);\n\n const {\n component = 'div',\n direction = 'column',\n spacing = 0,\n divider,\n children\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = {\n direction,\n spacing\n };\n return /*#__PURE__*/_jsx(StackRoot, _extends({\n as: component,\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: divider ? joinChildren(children, divider) : children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * Defines the `flex-direction` style property.\n * It is applied for all screen sizes.\n * @default 'column'\n */\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n\n /**\n * Add an element between each child.\n */\n divider: PropTypes.node,\n\n /**\n * Defines the space between immediate children.\n * @default 0\n */\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n\n /**\n * The system prop, which allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Stack;"],"names":["bucketSize","Box","sx","display","alignItems","height","width","justifyContent","flexFlow","marginLeft","fontSize","style","fontWeight","niceBytes","quota","textTransform","type","SetAccessPolicy","withSuspense","React","SetRetentionConfig","EnableBucketEncryption","EnableVersioningModal","BucketTags","EnableQuota","twoColCssGridLayoutConfig","gridTemplateColumns","xs","sm","gridAutoFlow","gap","connector","connect","state","session","console","distributedSetup","system","loadingBucket","buckets","bucketDetails","bucketInfo","setErrorSnackMessage","setBucketDetailsLoad","withStyles","theme","createStyles","spacingUtils","textStyleUtils","classes","match","useState","encryptionCfg","setEncryptionCfg","setBucketSize","hasObjectLocking","setHasObjectLocking","accessPolicyScreenOpen","setAccessPolicyScreenOpen","replicationRules","setReplicationRules","loadingObjectLocking","setLoadingLocking","loadingSize","setLoadingSize","bucketLoading","setBucketLoading","loadingEncryption","setLoadingEncryption","loadingVersioning","setLoadingVersioning","loadingQuota","setLoadingQuota","loadingReplication","setLoadingReplication","loadingRetention","setLoadingRetention","isVersioned","setIsVersioned","quotaEnabled","setQuotaEnabled","setQuota","encryptionEnabled","setEncryptionEnabled","retentionEnabled","setRetentionEnabled","retentionConfig","setRetentionConfig","retentionConfigOpen","setRetentionConfigOpen","enableEncryptionScreenOpen","setEnableEncryptionScreenOpen","enableQuotaScreenOpen","setEnableQuotaScreenOpen","enableVersioningOpen","setEnableVersioningOpen","bucketName","params","accessPolicy","policyDefinition","access","definition","displayGetBucketObjectLockConfiguration","hasPermission","IAM_SCOPES","displayGetBucketEncryptionConfiguration","displayGetBucketQuota","useEffect","api","then","res","algorithm","catch","err","errorMessage","is_versioned","object_locking_enabled","get","find","bucket","name","size","r","rules","length","loadAllBucketData","Fragment","open","selectedBucket","closeModalAndRefresh","enabled","cfg","actualPolicy","actualDefinition","closeVersioningModalAndRefresh","refresh","modalOpen","versioningCurrentState","Grid","container","item","className","spacerBottom","marginTop","marginBottom","SecureComponent","scopes","resource","EditablePropertyItem","iamScopes","resourceName","property","value","toLowerCase","onEdit","isLoading","LabelValuePair","label","LabelWithIcon","icon","textMuted","spacerTop","mode","validity","unit","slice","onClick","restProps","Button","color","variant","padding","margin","textDecoration","background","disableRipple","disableFocusRipple","CircularProgress","root","backgroundColor","disabled","IconButton","EditIcon","SecureAction","secureCmpProps","children","errorProps","top","orientation","stkProps","lblProps","valProps","direction","marginRight","_excluded","joinChildren","separator","childrenArray","filter","Boolean","reduce","output","child","index","push","key","StackRoot","styled","slot","overridesResolver","props","styles","ownerState","_extends","handleBreakpoints","resolveBreakpointValues","values","breakpoints","propValue","flexDirection","spacing","transformer","createUnarySpacing","base","Object","keys","acc","breakpoint","directionValues","spacingValues","deepmerge","row","column","getValue","Stack","inProps","ref","themeProps","useThemeProps","extendSxProp","component","divider","other","_objectWithoutPropertiesLoose","_jsx","as"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1973.55987b98.chunk.js b/portal-ui/build/static/js/1973.55987b98.chunk.js
deleted file mode 100644
index 816c6aac6..000000000
--- a/portal-ui/build/static/js/1973.55987b98.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1973],{91973:function(e,n,t){t.r(n),t.d(n,{default:function(){return U}});var i=t(23430),s=t(18489),r=t(50390),o=t(34424),a=t(86509),l=t(4285),c=t(56805),u=t(38342),d=t.n(u),f=t(25594),x=t(44149),p=t(72462),m=t(30324),h=t(77130),Z=t(49495),g=t(15607),v=t(37882),j=t(86458),b=t(1589),E=t(11387),T=t(94113),k=t(28948),S=t(62559),y=function(e){var n=e.bucketSize;return(0,S.jsxs)(c.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{height:37,width:37}},children:[(0,S.jsx)(E.Mh,{}),(0,S.jsxs)(c.Z,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"center",flexFlow:"column",marginLeft:"20px",fontSize:"19px"},children:[(0,S.jsx)("label",{style:{fontWeight:600},children:"Reported Usage:"}),(0,S.jsx)("label",{children:(0,k.ae)(n)})]})]})},C=function(e){var n=e.quota;return(0,S.jsxs)(c.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{height:37,width:37}},children:[(0,S.jsx)(E.sj,{}),(0,S.jsxs)(c.Z,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"center",flexFlow:"column",marginLeft:"20px",fontSize:"19px"},children:[(0,S.jsxs)("label",{style:{fontWeight:600,textTransform:"capitalize"},children:[null===n||void 0===n?void 0:n.type," Quota"]}),(0,S.jsxs)("label",{children:[" ",(0,k.ae)("".concat(null===n||void 0===n?void 0:n.quota))]})]})]})},_=(0,v.Z)(r.lazy((function(){return Promise.all([t.e(14),t.e(5444),t.e(892),t.e(8954),t.e(6951)]).then(t.bind(t,95239))}))),N=(0,v.Z)(r.lazy((function(){return Promise.all([t.e(14),t.e(2066),t.e(5444),t.e(892),t.e(9769),t.e(2966)]).then(t.bind(t,82825))}))),I=(0,v.Z)(r.lazy((function(){return Promise.all([t.e(14),t.e(2066),t.e(5444),t.e(892),t.e(4177)]).then(t.bind(t,44177))}))),P=(0,v.Z)(r.lazy((function(){return Promise.all([t.e(5444),t.e(9679)]).then(t.bind(t,39679))}))),B=(0,v.Z)(r.lazy((function(){return Promise.all([t.e(3360),t.e(8333)]).then(t.bind(t,28333))}))),O=(0,v.Z)(r.lazy((function(){return Promise.all([t.e(14),t.e(2066),t.e(5444),t.e(892),t.e(9769),t.e(4105),t.e(1711)]).then(t.bind(t,31711))}))),R={display:"grid",gridTemplateColumns:{xs:"1fr",sm:"2fr 1fr"},gridAutoFlow:{xs:"dense",sm:"row"},gap:2},F=(0,o.$j)((function(e){return{session:e.console.session,distributedSetup:e.system.distributedSetup,loadingBucket:e.buckets.bucketDetails.loadingBucket,bucketInfo:e.buckets.bucketDetails.bucketInfo}}),{setErrorSnackMessage:x.Ih,setBucketDetailsLoad:h.d5}),U=(0,l.Z)((function(e){return(0,a.Z)((0,s.Z)((0,s.Z)({},p.bK),p.VI))}))(F((function(e){var n=e.classes,t=e.match,o=e.distributedSetup,a=e.setErrorSnackMessage,l=e.loadingBucket,u=e.bucketInfo,x=e.setBucketDetailsLoad,p=(0,r.useState)(null),h=(0,i.Z)(p,2),v=h[0],k=h[1],F=(0,r.useState)("0"),U=(0,i.Z)(F,2),G=U[0],A=U[1],L=(0,r.useState)(!1),w=(0,i.Z)(L,2),M=w[0],D=w[1],z=(0,r.useState)(!1),K=(0,i.Z)(z,2),V=K[0],Y=K[1],q=(0,r.useState)(!1),Q=(0,i.Z)(q,2),W=Q[0],$=Q[1],J=(0,r.useState)(!0),H=(0,i.Z)(J,2),X=H[0],ee=H[1],ne=(0,r.useState)(!0),te=(0,i.Z)(ne,2),ie=te[0],se=te[1],re=(0,r.useState)(!0),oe=(0,i.Z)(re,2),ae=oe[0],le=oe[1],ce=(0,r.useState)(!0),ue=(0,i.Z)(ce,2),de=ue[0],fe=ue[1],xe=(0,r.useState)(!0),pe=(0,i.Z)(xe,2),me=pe[0],he=pe[1],Ze=(0,r.useState)(!0),ge=(0,i.Z)(Ze,2),ve=ge[0],je=ge[1],be=(0,r.useState)(!0),Ee=(0,i.Z)(be,2),Te=Ee[0],ke=Ee[1],Se=(0,r.useState)(!0),ye=(0,i.Z)(Se,2),Ce=ye[0],_e=ye[1],Ne=(0,r.useState)(!1),Ie=(0,i.Z)(Ne,2),Pe=Ie[0],Be=Ie[1],Oe=(0,r.useState)(!1),Re=(0,i.Z)(Oe,2),Fe=Re[0],Ue=Re[1],Ge=(0,r.useState)(null),Ae=(0,i.Z)(Ge,2),Le=Ae[0],we=Ae[1],Me=(0,r.useState)(!1),De=(0,i.Z)(Me,2),ze=De[0],Ke=De[1],Ve=(0,r.useState)(!1),Ye=(0,i.Z)(Ve,2),qe=Ye[0],Qe=Ye[1],We=(0,r.useState)(null),$e=(0,i.Z)(We,2),Je=$e[0],He=$e[1],Xe=(0,r.useState)(!1),en=(0,i.Z)(Xe,2),nn=en[0],tn=en[1],sn=(0,r.useState)(!1),rn=(0,i.Z)(sn,2),on=rn[0],an=rn[1],ln=(0,r.useState)(!1),cn=(0,i.Z)(ln,2),un=cn[0],dn=cn[1],fn=(0,r.useState)(!1),xn=(0,i.Z)(fn,2),pn=xn[0],mn=xn[1],hn=t.params.bucketName,Zn="n/a",gn="";null!==u&&(Zn=u.access,gn=u.definition);var vn=(0,g.F)(hn,[Z.Ft.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION]),jn=(0,g.F)(hn,[Z.Ft.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION]),bn=(0,g.F)(hn,[Z.Ft.ADMIN_GET_BUCKET_QUOTA]);(0,r.useEffect)((function(){le(!!l)}),[l,le]),(0,r.useEffect)((function(){de&&(jn?m.Z.invoke("GET","/api/v1/buckets/".concat(hn,"/encryption/info")).then((function(e){e.algorithm&&(Ke(!0),k(e)),fe(!1)})).catch((function(e){"The server side encryption configuration was not found"===e.errorMessage&&(Ke(!1),k(null)),fe(!1)})):(Ke(!1),k(null),fe(!1)))}),[de,hn,jn]),(0,r.useEffect)((function(){me&&o&&m.Z.invoke("GET","/api/v1/buckets/".concat(hn,"/versioning")).then((function(e){Be(e.is_versioned),he(!1)})).catch((function(e){a(e),he(!1)}))}),[me,a,hn,o]),(0,r.useEffect)((function(){ve&&o&&(bn?m.Z.invoke("GET","/api/v1/buckets/".concat(hn,"/quota")).then((function(e){we(e),e.quota?Ue(!0):Ue(!1),je(!1)})).catch((function(e){a(e),Ue(!1),je(!1)})):(Ue(!1),je(!1)))}),[ve,he,a,hn,o,bn]),(0,r.useEffect)((function(){me&&o&&(vn?m.Z.invoke("GET","/api/v1/buckets/".concat(hn,"/object-locking")).then((function(e){D(e.object_locking_enabled),ee(!1)})).catch((function(e){a(e),ee(!1)})):ee(!1))}),[X,a,hn,me,o,vn]),(0,r.useEffect)((function(){ie&&m.Z.invoke("GET","/api/v1/buckets").then((function(e){var n=d()(e,"buckets",[]).find((function(e){return e.name===hn})),t=d()(n,"size","0");se(!1),A(t)})).catch((function(e){se(!1),a(e)}))}),[ie,a,hn]),(0,r.useEffect)((function(){Te&&o&&m.Z.invoke("GET","/api/v1/buckets/".concat(hn,"/replication")).then((function(e){var n=e.rules?e.rules:[];$(n.length>0),ke(!1)})).catch((function(e){a(e),ke(!1)}))}),[Te,a,hn,o]),(0,r.useEffect)((function(){Ce&&M&&m.Z.invoke("GET","/api/v1/buckets/".concat(hn,"/retention")).then((function(e){_e(!1),Qe(!0),He(e)})).catch((function(e){Qe(!1),_e(!1),He(null)}))}),[Ce,M,hn]);var En=function(){x(!0),le(!0),se(!0),he(!0),fe(!0),_e(!0)};return(0,S.jsxs)(r.Fragment,{children:[on&&(0,S.jsx)(I,{open:on,selectedBucket:hn,encryptionEnabled:ze,encryptionCfg:v,closeModalAndRefresh:function(){an(!1),fe(!0)}}),un&&(0,S.jsx)(O,{open:un,selectedBucket:hn,enabled:Fe,cfg:Le,closeModalAndRefresh:function(){dn(!1),je(!0)}}),V&&(0,S.jsx)(_,{bucketName:hn,open:V,actualPolicy:Zn,actualDefinition:gn,closeModalAndRefresh:function(){Y(!1),En()}}),nn&&(0,S.jsx)(N,{bucketName:hn,open:nn,closeModalAndRefresh:function(){tn(!1),En()}}),pn&&(0,S.jsx)(P,{closeVersioningModalAndRefresh:function(e){mn(!1),e&&En()},modalOpen:pn,selectedBucket:hn,versioningCurrentState:Pe}),(0,S.jsx)(f.ZP,{container:!0,children:(0,S.jsx)(f.ZP,{item:!0,xs:12,className:n.spacerBottom,children:(0,S.jsx)("h3",{style:{marginTop:"0",marginBottom:"0"},children:"Summary"})})}),(0,S.jsx)(g.Z,{scopes:[Z.Ft.S3_GET_BUCKET_POLICY],resource:hn,children:(0,S.jsxs)(c.Z,{sx:(0,s.Z)({},R),children:[(0,S.jsxs)(c.Z,{sx:(0,s.Z)({},R),children:[(0,S.jsx)(g.Z,{scopes:[Z.Ft.S3_GET_BUCKET_POLICY],resource:hn,children:(0,S.jsx)(T.default,{iamScopes:[Z.Ft.S3_PUT_BUCKET_POLICY],resourceName:hn,property:"Access Policy:",value:Zn.toLowerCase(),onEdit:function(){Y(!0)},isLoading:ae})}),(0,S.jsx)(g.Z,{scopes:[Z.Ft.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION],resource:hn,children:(0,S.jsx)(T.default,{iamScopes:[Z.Ft.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION],resourceName:hn,property:"Encryption:",value:ze?"Enabled":"Disabled",onEdit:function(){an(!0)},isLoading:de})}),(0,S.jsx)(g.Z,{scopes:[Z.Ft.S3_GET_REPLICATION_CONFIGURATION],resource:hn,children:(0,S.jsx)(j.default,{label:"Replication:",value:(0,S.jsx)(b.Z,{icon:W?(0,S.jsx)(E.E3,{}):(0,S.jsx)(E.dR,{}),label:(0,S.jsx)("label",{className:n.textMuted,children:W?"Enabled":"Disabled"})})})}),(0,S.jsx)(g.Z,{scopes:[Z.Ft.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION],resource:hn,children:(0,S.jsx)(j.default,{label:"Object Locking:",value:(0,S.jsx)(b.Z,{icon:M?(0,S.jsx)(E.E3,{}):(0,S.jsx)(E.dR,{}),label:(0,S.jsx)("label",{className:n.textMuted,children:M?"Enabled":"Disabled"})})})}),(0,S.jsx)(c.Z,{className:n.spacerTop,children:(0,S.jsx)(j.default,{label:"Tags:",value:(0,S.jsx)(B,{setErrorSnackMessage:a,bucketName:hn})})})]}),(0,S.jsx)(c.Z,{sx:{display:"grid",gridTemplateColumns:"1fr",alignItems:"flex-start"},children:(0,S.jsx)(y,{bucketSize:G})})]})}),o&&(0,S.jsxs)(g.Z,{scopes:[Z.Ft.S3_GET_BUCKET_VERSIONING],resource:hn,children:[(0,S.jsx)(f.ZP,{container:!0,children:(0,S.jsx)(f.ZP,{item:!0,xs:12,className:n.spacerBottom,children:(0,S.jsx)("h3",{style:{marginTop:"25px",marginBottom:"0"},children:"Versioning"})})}),(0,S.jsxs)(c.Z,{sx:(0,s.Z)({},R),children:[(0,S.jsxs)(c.Z,{sx:(0,s.Z)({},R),children:[(0,S.jsx)(T.default,{iamScopes:[Z.Ft.S3_PUT_BUCKET_VERSIONING],resourceName:hn,property:"Versioning:",value:Pe?"Enabled":"Disabled",onEdit:function(){mn(!0)},isLoading:me}),(0,S.jsx)(T.default,{iamScopes:[Z.Ft.ADMIN_SET_BUCKET_QUOTA],resourceName:hn,property:"Quota:",value:Fe?"Enabled":"Disabled",onEdit:function(){dn(!0)},isLoading:ve})]}),(0,S.jsx)(c.Z,{sx:{display:"grid",gridTemplateColumns:"1fr",alignItems:"flex-start"},children:Fe&&Le?(0,S.jsx)(C,{quota:Le}):null})]})]}),M&&(0,S.jsxs)(g.Z,{scopes:[Z.Ft.S3_GET_OBJECT_RETENTION],resource:hn,children:[(0,S.jsx)(f.ZP,{container:!0,children:(0,S.jsx)(f.ZP,{item:!0,xs:12,className:n.spacerBottom,children:(0,S.jsx)("h3",{style:{marginTop:"25px",marginBottom:"0"},children:"Retention"})})}),(0,S.jsxs)(c.Z,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"2fr 1fr"},gridAutoFlow:{xs:"dense",sm:"row"},gap:2},children:[(0,S.jsxs)(c.Z,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"2fr 1fr"},gridAutoFlow:{xs:"dense",sm:"row"},gap:2},children:[(0,S.jsx)(T.default,{iamScopes:[Z.Ft.ADMIN_SET_BUCKET_QUOTA],resourceName:hn,property:"Retention:",value:qe?"Enabled":"Disabled",onEdit:function(){tn(!0)},isLoading:Ce}),(0,S.jsx)(j.default,{label:"Mode:",value:(0,S.jsx)("label",{className:n.textMuted,style:{textTransform:"capitalize"},children:Je&&Je.mode?Je.mode:"-"})}),(0,S.jsx)(j.default,{label:"Validity:",value:(0,S.jsxs)("label",{className:n.textMuted,style:{textTransform:"capitalize"},children:[Je&&Je.validity," ",Je&&(1===Je.validity?Je.unit.slice(0,-1):Je.unit)]})})]}),(0,S.jsx)(c.Z,{sx:{display:"grid",gridTemplateColumns:"1fr",alignItems:"flex-start"}})]})]})]})})))},94113:function(e,n,t){t.r(n),t.d(n,{default:function(){return j}});var i=t(18489),s=(t(50390),t(86458)),r=t(15607),o=t(83738),a=t(66946),l=t(18201),c=t(62559),u=["isLoading","onClick","label"],d=function(e){var n=e.isLoading,t=e.onClick,s=e.label,r=(0,o.Z)(e,u);return(0,c.jsx)(a.Z,(0,i.Z)((0,i.Z)({color:"primary",onClick:t,variant:"text",sx:{padding:0,margin:0,alignItems:"flex-start",justifyContent:"flex-start",display:"inline-flex",height:"auto",textDecoration:"underline",color:"#2781B0","&:hover":{background:"#ffffff",textDecoration:"underline"}},disableRipple:!0,disableFocusRipple:!0},r),{},{children:n?(0,c.jsx)(l.Z,{color:"primary",size:16,variant:"indeterminate"}):s}))},f=t(56805),x=t(95467),p=t(59078),m=t(86509),h=t(4285),Z=["disabled","onClick"],g=(0,h.Z)((function(e){return(0,m.Z)({root:{"&:hover":{backgroundColor:"#E2E2E2"}}})}))((function(e){var n=e.disabled,t=e.onClick,s=(0,o.Z)(e,Z);return(0,c.jsx)(x.Z,(0,i.Z)((0,i.Z)({size:"small",disabled:n,onClick:t},s),{},{children:(0,c.jsx)(p.Z,{})}))})),v=function(e){var n=e.resourceName,t=e.iamScopes,s=e.secureCmpProps,o=void 0===s?{}:s,a=e.children;return(0,c.jsx)(r.Z,(0,i.Z)((0,i.Z)({scopes:t,resource:n,errorProps:{disabled:!0}},o),{},{children:a}))},j=function(e){var n=e.isLoading,t=void 0===n||n,i=e.resourceName,r=void 0===i?"":i,o=e.iamScopes,a=e.secureCmpProps,l=void 0===a?{}:a,u=e.property,x=void 0===u?null:u,p=e.value,m=void 0===p?null:p,h=e.onEdit;return(0,c.jsxs)(f.Z,{sx:{display:"flex",alignItems:"baseline",justifyContent:"flex-start"},children:[(0,c.jsx)(s.default,{label:x,value:(0,c.jsx)(v,{resourceName:r,iamScopes:o,secureCmpProps:l,children:(0,c.jsx)(d,{isLoading:t,onClick:h,label:m})})}),(0,c.jsx)(v,{resourceName:r,iamScopes:o,secureCmpProps:l,children:(0,c.jsx)(g,{onClick:h,sx:{background:"#f8f8f8",marginLeft:"3px",top:3,"& .min-icon":{width:"16px",height:"16px"}}})})]})}},1589:function(e,n,t){t(50390);var i=t(56805),s=t(62559);n.Z=function(e){var n=e.icon,t=void 0===n?null:n,r=e.label,o=void 0===r?null:r;return(0,s.jsxs)(i.Z,{sx:{display:"flex"},children:[(0,s.jsx)("div",{style:{height:16,width:16,display:"flex",alignItems:"center",marginTop:5},children:t}),(0,s.jsx)("div",{style:{marginLeft:t?5:"none"},children:o})]})}},86458:function(e,n,t){t.r(n);var i=t(18489),s=(t(50390),t(19787)),r=t(62559);n.default=function(e){var n=e.label,t=void 0===n?null:n,o=e.value,a=void 0===o?"-":o,l=e.orientation,c=void 0===l?"column":l,u=e.stkProps,d=void 0===u?{}:u,f=e.lblProps,x=void 0===f?{}:f,p=e.valProps,m=void 0===p?{}:p;return(0,r.jsxs)(s.Z,(0,i.Z)((0,i.Z)({direction:{xs:"column",sm:c}},d),{},{children:[(0,r.jsx)("label",(0,i.Z)((0,i.Z)({style:{marginRight:5,fontWeight:600}},x),{},{children:t})),(0,r.jsx)("label",(0,i.Z)((0,i.Z)({style:{marginRight:5,fontWeight:500}},m),{},{children:a}))]}))}},19787:function(e,n,t){var i=t(36222),s=t(1048),r=t(32793),o=t(50390),a=t(11188),l=t(88646),c=t(99301),u=t(64487),d=t(8208),f=t(15573),x=t(62559),p=["component","direction","spacing","divider","children"];function m(e,n){var t=o.Children.toArray(e).filter(Boolean);return t.reduce((function(e,i,s){return e.push(i),s :not(style) + :not(style)":(0,i.Z)({margin:0},"margin".concat((s=t?d[t]:n.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[s])),(0,l.NA)(o,e))};var s})))}return s})),Z=o.forwardRef((function(e,n){var t=(0,f.Z)({props:e,name:"MuiStack"}),i=(0,c.Z)(t),o=i.component,a=void 0===o?"div":o,l=i.direction,u=void 0===l?"column":l,d=i.spacing,Z=void 0===d?0:d,g=i.divider,v=i.children,j=(0,s.Z)(i,p),b={direction:u,spacing:Z};return(0,x.jsx)(h,(0,r.Z)({as:a,ownerState:b,ref:n},j,{children:g?m(v,g):v}))}));n.Z=Z}}]);
-//# sourceMappingURL=1973.55987b98.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1990.b0b81374.chunk.js b/portal-ui/build/static/js/1990.b0b81374.chunk.js
new file mode 100644
index 000000000..1b74487c4
--- /dev/null
+++ b/portal-ui/build/static/js/1990.b0b81374.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1990],{48898:function(e,n,t){t.r(n),t.d(n,{default:function(){return z}});var s=t(23430),r=t(18489),o=t(50390),a=t(34424),c=t(86509),i=t(4285),l=t(25594),u=t(30324),d=t(56805),f=t(44149),h=t(98280),Z=t(17777),p=t(25233),m=t(35721),x=t(72462),v=t(76352),j=t(66964),g=t(66946),y=t(81378),S=t(62559),b=(0,a.$j)(null,{setModalErrorSnackMessage:f.zb}),w=(0,i.Z)((function(e){return(0,c.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({buttonContainer:{textAlign:"right"}},x.ID),x.DF),x.bK),(0,x.Bz)(e.spacing(4))))}))(b((function(e){var n=e.classes,t=e.open,r=e.closeModal,a=e.setModalErrorSnackMessage,c=(0,o.useState)(""),i=(0,s.Z)(c,2),d=i[0],f=i[1],Z=(0,o.useState)(""),p=(0,s.Z)(Z,2),m=p[0],x=p[1],b=(0,o.useState)(""),w=(0,s.Z)(b,2),C=w[0],A=w[1],M=(0,o.useState)(!1),P=(0,s.Z)(M,2),k=P[0],E=P[1];return t?(0,S.jsx)(v.Z,{title:"Change Password",modalOpen:t,onClose:function(){x(""),A(""),f(""),r()},titleIcon:(0,S.jsx)(h.I,{}),children:(0,S.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){if(e.preventDefault(),m===C){if(m.length<8)a({errorMessage:"Passwords must be at least 8 characters long",detailedError:""});else if(!k){E(!0);var n={current_secret_key:d,new_secret_key:m};u.Z.invoke("POST","/api/v1/account/change-password",n).then((function(){E(!1),x(""),A(""),f(""),r()})).catch((function(e){E(!1),x(""),A(""),f(""),a(e)}))}}else a({errorMessage:"New passwords don't match",detailedError:""})}(e)},children:(0,S.jsxs)(l.ZP,{container:!0,children:[(0,S.jsxs)(l.ZP,{item:!0,xs:12,className:n.modalFormScrollable,children:[(0,S.jsx)(l.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,S.jsx)(j.Z,{id:"current-password",name:"current-password",onChange:function(e){f(e.target.value)},label:"Current Password",type:"password",value:d})}),(0,S.jsx)(l.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,S.jsx)(j.Z,{id:"new-password",name:"new-password",onChange:function(e){x(e.target.value)},label:"New Password",type:"password",value:m})}),(0,S.jsx)(l.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,S.jsx)(j.Z,{id:"re-new-password",name:"re-new-password",onChange:function(e){A(e.target.value)},label:"Type New Password Again",type:"password",value:C})})]}),(0,S.jsx)(l.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:(0,S.jsx)(g.Z,{type:"submit",variant:"contained",color:"primary",disabled:k||!(d.length>0&&m.length>0&&C.length>0),children:"Save"})}),k&&(0,S.jsx)(l.ZP,{item:!0,xs:12,children:(0,S.jsx)(y.Z,{})})]})})}):null}))),C=t(8235),A=t(25534),M=t(23165),P=t(37882),k=t(49495),E=t(15607),N=t(53224),O=t(73726),F=t(31529),R=t(70014);(0,c.Z)((0,r.Z)((0,r.Z)({},x.ID),x.bK));var I=(0,a.$j)(null,{setModalErrorSnackMessage:f.zb}),D=(0,i.Z)((function(e){return(0,c.Z)((0,r.Z)((0,r.Z)((0,r.Z)({codeMirrorContainer:{marginBottom:20,"& label":{marginBottom:".5rem"},"& label + div":{display:"none"}}},x.DF),x.ID),x.bK))}))(I((function(e){var n=e.classes,t=e.open,r=e.selectedAccessKey,a=e.closeModalAndRefresh,c=e.setModalErrorSnackMessage,i=(0,o.useState)(!0),d=(0,s.Z)(i,2),f=d[0],Z=d[1],p=(0,o.useState)(""),m=(0,s.Z)(p,2),x=m[0],j=m[1];return(0,o.useEffect)((function(){f&&u.Z.invoke("GET","/api/v1/service-accounts/".concat(r,"/policy")).then((function(e){Z(!1),j(e)})).catch((function(e){Z(!1),c(e)}))}),[f,Z,c,r]),(0,S.jsx)(v.Z,{title:"Service Account Policy",modalOpen:t,onClose:function(){a()},titleIcon:(0,S.jsx)(h.QX,{}),children:(0,S.jsxs)(l.ZP,{container:!0,children:[(0,S.jsx)(l.ZP,{item:!0,xs:12,className:n.codeMirrorContainer,children:(0,S.jsx)(R.Z,{label:"Service Account Policy",value:x,onBeforeChange:function(e,n,t){j(t)},editorHeight:"350px",readOnly:!0})}),(0,S.jsx)(l.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:(0,S.jsx)(g.Z,{type:"button",variant:"outlined",color:"primary",onClick:function(){a()},disabled:f,children:"Cancel"})})]})})}))),B=(0,P.Z)(o.lazy((function(){return t.e(8394).then(t.bind(t,48394))}))),K=(0,P.Z)(o.lazy((function(){return t.e(4109).then(t.bind(t,47664))}))),_=(0,P.Z)(o.lazy((function(){return t.e(1140).then(t.bind(t,39080))}))),T=(0,a.$j)(null,{displayErrorMessage:f.Ih}),z=(0,i.Z)((function(e){return(0,c.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},x.OR),x.qg),{},{searchField:(0,r.Z)((0,r.Z)({},x.qg.searchField),{},{marginRight:"auto",maxWidth:380})},x.VX),(0,x.Bz)(e.spacing(4))))}))(T((function(e){var n=e.classes,t=e.displayErrorMessage,r=(0,o.useState)([]),a=(0,s.Z)(r,2),c=a[0],i=a[1],x=(0,o.useState)(!1),v=(0,s.Z)(x,2),j=v[0],g=v[1],y=(0,o.useState)(""),b=(0,s.Z)(y,2),P=b[0],R=b[1],I=(0,o.useState)(!1),T=(0,s.Z)(I,2),z=T[0],L=T[1],V=(0,o.useState)(!1),$=(0,s.Z)(V,2),q=$[0],G=$[1],U=(0,o.useState)(null),X=(0,s.Z)(U,2),H=X[0],J=X[1],Q=(0,o.useState)(!1),W=(0,s.Z)(Q,2),Y=W[0],ee=W[1],ne=(0,o.useState)(null),te=(0,s.Z)(ne,2),se=te[0],re=te[1],oe=(0,o.useState)(!1),ae=(0,s.Z)(oe,2),ce=ae[0],ie=ae[1],le=(0,o.useState)([]),ue=(0,s.Z)(le,2),de=ue[0],fe=ue[1],he=(0,o.useState)(!1),Ze=(0,s.Z)(he,2),pe=Ze[0],me=Ze[1],xe=(0,o.useState)(!1),ve=(0,s.Z)(xe,2),je=ve[0],ge=ve[1];(0,o.useEffect)((function(){ye()}),[]),(0,o.useEffect)((function(){j&&u.Z.invoke("GET","/api/v1/service-accounts").then((function(e){var n=e.sort(p.V2);g(!1),i(n)})).catch((function(e){t(e),g(!1)}))}),[j,g,i,t]);var ye=function(){g(!0)},Se=[{type:"view",onClick:function(e){J(e),ge(!0)}},{type:"delete",onClick:function(e){J(e),G(!0)}}],be=c.filter((function(e){return e.toLowerCase().includes(P.toLowerCase())}));return(0,S.jsxs)(o.Fragment,{children:[z&&(0,S.jsx)(B,{open:z,closeModalAndRefresh:function(e){!function(e){if(L(!1),ye(),null!==e){var n={console:{accessKey:"".concat(e.accessKey),secretKey:"".concat(e.secretKey)}};re(n),ee(!0)}}(e)}}),q&&(0,S.jsx)(K,{deleteOpen:q,selectedServiceAccount:H,closeDeleteModalAndRefresh:function(e){!function(e){G(!1),e&&ye()}(e)}}),pe&&(0,S.jsx)(F.Z,{deleteOpen:pe,selectedSAs:de,closeDeleteModalAndRefresh:function(e){me(!1),e&&((0,f.y1)("Service accounts deleted successfully."),fe([]),g(!0))}}),Y&&(0,S.jsx)(_,{newServiceAccount:se,open:Y,closeModal:function(){ee(!1),re(null)},entity:"Service Account"}),je&&(0,S.jsx)(D,{open:je,selectedAccessKey:H,closeModalAndRefresh:function(){ge(!1)}}),(0,S.jsx)(w,{open:ce,closeModal:function(){return ie(!1)}}),(0,S.jsx)(m.Z,{label:"Service Accounts"}),(0,S.jsxs)(A.Z,{children:[(0,S.jsxs)(l.ZP,{item:!0,xs:12,className:n.actionsTray,children:[(0,S.jsx)(M.Z,{placeholder:"Search Service Accounts",onChange:R,overrideClass:n.searchField,value:P}),(0,S.jsxs)(d.Z,{sx:{display:"flex"},children:[" ",(0,S.jsx)(N.Z,{tooltip:"Delete Selected",onClick:function(){me(!0)},text:"Delete Selected",icon:(0,S.jsx)(h.pJ,{}),color:"secondary",disabled:0===de.length,variant:"outlined"}),(0,S.jsx)(E.Z,{scopes:[k.Ft.ADMIN_CREATE_USER],resource:k.C3,matchAll:!0,errorProps:{disabled:!0},children:(0,S.jsx)(N.Z,{onClick:function(){return ie(!0)},text:"Change Password",icon:(0,S.jsx)(h.tv,{}),color:"primary",variant:"outlined"})}),(0,S.jsx)(N.Z,{onClick:function(){L(!0),J(null)},text:"Create service account",icon:(0,S.jsx)(h.dt,{}),color:"primary",variant:"contained"})]})]}),(0,S.jsx)(l.ZP,{item:!0,xs:12,className:n.tableBlock,children:(0,S.jsx)(Z.Z,{isLoading:j,records:be,entityName:"Service Accounts",idField:"",columns:[{label:"Service Account",elementKey:""}],itemActions:Se,selectedItems:de,onSelect:function(e){return(0,O._0)(e,fe,de)},onSelectAll:function(){de.length!==c.length?fe(c):fe([])}})}),(0,S.jsx)(l.ZP,{item:!0,xs:12,marginTop:"15px",children:(0,S.jsx)(C.Z,{title:"Learn more about SERVICE ACCOUNTS",iconComponent:(0,S.jsx)(h.fr,{}),help:(0,S.jsxs)(o.Fragment,{children:["MinIO service accounts are child identities of an authenticated MinIO user, including externally managed identities. Each service account inherits its privileges based on the policies attached to it\u2019s parent user or those groups in which the parent user has membership. Service accounts also support an optional inline policy which further restricts access to a subset of actions and resources available to the parent user.",(0,S.jsx)("br",{}),(0,S.jsx)("br",{}),"You can learn more at our"," ",(0,S.jsx)("a",{href:"https://docs.min.io/minio/baremetal/security/minio-identity-management/user-management.html?ref=con#service-accounts",target:"_blank",rel:"noreferrer",children:"documentation"}),"."]})})})]})]})})))},18207:function(e,n,t){function s(){return s=Object.assign||function(e){for(var n=1;n=0||(r[t]=e[t]);return r}t.d(n,{Z:function(){return s}})}}]);
+//# sourceMappingURL=1990.b0b81374.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1990.b0b81374.chunk.js.map b/portal-ui/build/static/js/1990.b0b81374.chunk.js.map
new file mode 100644
index 000000000..df81c4495
--- /dev/null
+++ b/portal-ui/build/static/js/1990.b0b81374.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1990.b0b81374.chunk.js","mappings":"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","sources":["screens/Console/Account/ChangePasswordModal.tsx","screens/Console/Account/ServiceAccountPolicy.tsx","screens/Console/Account/Account.tsx","../javascript/esm|/Users/dvaldivia/go/src/github.com/minio/console/portal-ui/node_modules/@mui/lab/node_modules/@babel/runtime/helpers/esm/extends.js","../javascript/esm|/Users/dvaldivia/go/src/github.com/minio/console/portal-ui/node_modules/@mui/lab/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { Button, LinearProgress } from \"@mui/material\";\nimport {\n containerForHeader,\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport { ChangePasswordRequest } from \"../Buckets/types\";\nimport { setModalErrorSnackMessage } from \"../../../actions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport api from \"../../../common/api\";\nimport { ChangePasswordIcon } from \"../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonContainer: {\n textAlign: \"right\",\n },\n ...modalStyleUtils,\n ...formFieldStyles,\n ...spacingUtils,\n ...containerForHeader(theme.spacing(4)),\n });\n\ninterface IChangePasswordProps {\n classes: any;\n open: boolean;\n closeModal: () => void;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst ChangePassword = ({\n classes,\n open,\n closeModal,\n setModalErrorSnackMessage,\n}: IChangePasswordProps) => {\n const [currentPassword, setCurrentPassword] = useState(\"\");\n const [newPassword, setNewPassword] = useState(\"\");\n const [reNewPassword, setReNewPassword] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const changePassword = (event: React.FormEvent) => {\n event.preventDefault();\n\n if (newPassword !== reNewPassword) {\n setModalErrorSnackMessage({\n errorMessage: \"New passwords don't match\",\n detailedError: \"\",\n });\n return;\n }\n\n if (newPassword.length < 8) {\n setModalErrorSnackMessage({\n errorMessage: \"Passwords must be at least 8 characters long\",\n detailedError: \"\",\n });\n return;\n }\n\n if (loading) {\n return;\n }\n setLoading(true);\n\n let request: ChangePasswordRequest = {\n current_secret_key: currentPassword,\n new_secret_key: newPassword,\n };\n\n api\n .invoke(\"POST\", \"/api/v1/account/change-password\", request)\n .then(() => {\n setLoading(false);\n setNewPassword(\"\");\n setReNewPassword(\"\");\n setCurrentPassword(\"\");\n closeModal();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n setNewPassword(\"\");\n setReNewPassword(\"\");\n setCurrentPassword(\"\");\n setModalErrorSnackMessage(err);\n });\n };\n\n return open ? (\n {\n setNewPassword(\"\");\n setReNewPassword(\"\");\n setCurrentPassword(\"\");\n closeModal();\n }}\n titleIcon={}\n >\n \n \n ) : null;\n};\n\nconst connector = connect(null, {\n setModalErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ChangePassword));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Button } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../actions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport api from \"../../../common/api\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport { ChangeAccessPolicyIcon } from \"../../../icons\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n codeMirrorContainer: {\n marginBottom: 20,\n \"& label\": {\n marginBottom: \".5rem\",\n },\n \"& label + div\": {\n display: \"none\",\n },\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\ncreateStyles({\n ...modalStyleUtils,\n ...spacingUtils,\n});\n\ninterface IServiceAccountPolicyProps {\n classes: any;\n open: boolean;\n selectedAccessKey: string | null;\n closeModalAndRefresh: () => void;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst ServiceAccountPolicy = ({\n classes,\n open,\n selectedAccessKey,\n closeModalAndRefresh,\n setModalErrorSnackMessage,\n}: IServiceAccountPolicyProps) => {\n const [loading, setLoading] = useState(true);\n const [policyDefinition, setPolicyDefinition] = useState(\"\");\n useEffect(() => {\n if (loading) {\n api\n .invoke(\"GET\", `/api/v1/service-accounts/${selectedAccessKey}/policy`)\n .then((res) => {\n setLoading(false);\n setPolicyDefinition(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n setModalErrorSnackMessage(err);\n });\n }\n }, [loading, setLoading, setModalErrorSnackMessage, selectedAccessKey]);\n\n return (\n {\n closeModalAndRefresh();\n }}\n titleIcon={}\n >\n \n \n {\n setPolicyDefinition(value);\n }}\n editorHeight={\"350px\"}\n readOnly={true}\n />\n \n \n \n \n \n \n );\n};\n\nconst connector = connect(null, {\n setModalErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ServiceAccountPolicy));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport api from \"../../../common/api\";\nimport { Box } from \"@mui/material\";\nimport { NewServiceAccount } from \"../Common/CredentialsPrompt/types\";\nimport { setErrorSnackMessage, setSnackBarMessage } from \"../../../actions\";\nimport {\n AccountIcon,\n AddIcon,\n PasswordKeyIcon,\n DeleteIcon,\n} from \"../../../icons\";\nimport TableWrapper from \"../Common/TableWrapper/TableWrapper\";\nimport { stringSort } from \"../../../utils/sortFunctions\";\nimport PageHeader from \"../Common/PageHeader/PageHeader\";\nimport {\n actionsTray,\n containerForHeader,\n searchField,\n tableStyles,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport ChangePasswordModal from \"./ChangePasswordModal\";\nimport HelpBox from \"../../../common/HelpBox\";\nimport PageLayout from \"../Common/Layout/PageLayout\";\nimport SearchBox from \"../Common/SearchBox\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport SecureComponent from \"../../../common/SecureComponent/SecureComponent\";\nimport RBIconButton from \"../Buckets/BucketDetails/SummaryItems/RBIconButton\";\nimport { selectSAs } from \"../Configurations/utils\";\nimport DeleteMultipleServiceAccounts from \"../Users/DeleteMultipleServiceAccounts\";\nimport ServiceAccountPolicy from \"./ServiceAccountPolicy\";\n\nconst AddServiceAccount = withSuspense(\n React.lazy(() => import(\"./AddServiceAccount\"))\n);\nconst DeleteServiceAccount = withSuspense(\n React.lazy(() => import(\"./DeleteServiceAccount\"))\n);\nconst CredentialsPrompt = withSuspense(\n React.lazy(() => import(\"../Common/CredentialsPrompt/CredentialsPrompt\"))\n);\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...actionsTray,\n ...searchField,\n searchField: {\n ...searchField.searchField,\n marginRight: \"auto\",\n maxWidth: 380,\n },\n ...tableStyles,\n ...containerForHeader(theme.spacing(4)),\n });\n\ninterface IServiceAccountsProps {\n classes: any;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst Account = ({ classes, displayErrorMessage }: IServiceAccountsProps) => {\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n const [addScreenOpen, setAddScreenOpen] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedServiceAccount, setSelectedServiceAccount] = useState<\n string | null\n >(null);\n const [showNewCredentials, setShowNewCredentials] = useState(false);\n const [newServiceAccount, setNewServiceAccount] =\n useState(null);\n const [changePasswordModalOpen, setChangePasswordModalOpen] =\n useState(false);\n const [selectedSAs, setSelectedSAs] = useState([]);\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [policyOpen, setPolicyOpen] = useState(false);\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\"GET\", `/api/v1/service-accounts`)\n .then((res: string[]) => {\n const serviceAccounts = res.sort(stringSort);\n\n setLoading(false);\n setRecords(serviceAccounts);\n })\n .catch((err: ErrorResponseHandler) => {\n displayErrorMessage(err);\n setLoading(false);\n });\n }\n }, [loading, setLoading, setRecords, displayErrorMessage]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const closeAddModalAndRefresh = (res: NewServiceAccount | null) => {\n setAddScreenOpen(false);\n fetchRecords();\n\n if (res !== null) {\n const nsa: NewServiceAccount = {\n console: {\n accessKey: `${res.accessKey}`,\n secretKey: `${res.secretKey}`,\n },\n };\n setNewServiceAccount(nsa);\n setShowNewCredentials(true);\n }\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n fetchRecords();\n }\n };\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n if (refresh) {\n setSnackBarMessage(`Service accounts deleted successfully.`);\n setSelectedSAs([]);\n setLoading(true);\n }\n };\n\n const policyModalOpen = (selectedServiceAccount: string) => {\n setSelectedServiceAccount(selectedServiceAccount);\n setPolicyOpen(true);\n };\n\n const selectAllItems = () => {\n if (selectedSAs.length === records.length) {\n setSelectedSAs([]);\n return;\n }\n setSelectedSAs(records);\n };\n\n const closeCredentialsModal = () => {\n setShowNewCredentials(false);\n setNewServiceAccount(null);\n };\n\n const closePolicyModal = () => {\n setPolicyOpen(false);\n };\n\n const confirmDeleteServiceAccount = (selectedServiceAccount: string) => {\n setSelectedServiceAccount(selectedServiceAccount);\n setDeleteOpen(true);\n };\n\n const tableActions = [\n { type: \"view\", onClick: policyModalOpen },\n { type: \"delete\", onClick: confirmDeleteServiceAccount },\n ];\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.toLowerCase().includes(filter.toLowerCase())\n );\n\n return (\n \n {addScreenOpen && (\n {\n closeAddModalAndRefresh(res);\n }}\n />\n )}\n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {deleteMultipleOpen && (\n