Disabled selected buttons in table wrapper (#692)
Co-authored-by: Benjamin Perez <benjamin@bexsoft.net>
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"files": {
|
||||
"main.css": "/static/css/main.a19f3d53.chunk.css",
|
||||
"main.js": "/static/js/main.20231044.chunk.js",
|
||||
"main.js.map": "/static/js/main.20231044.chunk.js.map",
|
||||
"main.js": "/static/js/main.a8ae7284.chunk.js",
|
||||
"main.js.map": "/static/js/main.a8ae7284.chunk.js.map",
|
||||
"runtime-main.js": "/static/js/runtime-main.f48e99e5.js",
|
||||
"runtime-main.js.map": "/static/js/runtime-main.f48e99e5.js.map",
|
||||
"static/css/2.f324abd6.chunk.css": "/static/css/2.f324abd6.chunk.css",
|
||||
@@ -20,6 +20,6 @@
|
||||
"static/css/2.f324abd6.chunk.css",
|
||||
"static/js/2.26e254ca.chunk.js",
|
||||
"static/css/main.a19f3d53.chunk.css",
|
||||
"static/js/main.20231044.chunk.js"
|
||||
"static/js/main.a8ae7284.chunk.js"
|
||||
]
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="MinIO Console"/><link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;500;700;900&display=swap" rel="stylesheet"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/><link rel="manifest" href="/manifest.json"/><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#3a4e54"/><title>MinIO Console</title><link href="/static/css/2.f324abd6.chunk.css" rel="stylesheet"><link href="/static/css/main.a19f3d53.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,l,i=r[0],a=r[1],p=r[2],c=0,s=[];c<i.length;c++)l=i[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(f&&f(r);s.length;)s.shift()();return u.push.apply(u,p||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var a=t[i];0!==o[a]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={1:0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var i=this["webpackJsonpportal-ui"]=this["webpackJsonpportal-ui"]||[],a=i.push.bind(i);i.push=r,i=i.slice();for(var p=0;p<i.length;p++)r(i[p]);var f=a;t()}([])</script><script src="/static/js/2.26e254ca.chunk.js"></script><script src="/static/js/main.20231044.chunk.js"></script></body></html>
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="MinIO Console"/><link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;500;700;900&display=swap" rel="stylesheet"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/><link rel="manifest" href="/manifest.json"/><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#3a4e54"/><title>MinIO Console</title><link href="/static/css/2.f324abd6.chunk.css" rel="stylesheet"><link href="/static/css/main.a19f3d53.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,l,i=r[0],a=r[1],p=r[2],c=0,s=[];c<i.length;c++)l=i[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(f&&f(r);s.length;)s.shift()();return u.push.apply(u,p||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var a=t[i];0!==o[a]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={1:0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var i=this["webpackJsonpportal-ui"]=this["webpackJsonpportal-ui"]||[],a=i.push.bind(i);i.push=r,i=i.slice();for(var p=0;p<i.length;p++)r(i[p]);var f=a;t()}([])</script><script src="/static/js/2.26e254ca.chunk.js"></script><script src="/static/js/main.a8ae7284.chunk.js"></script></body></html>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
portal-ui/build/static/js/main.a8ae7284.chunk.js.map
Normal file
1
portal-ui/build/static/js/main.a8ae7284.chunk.js.map
Normal file
File diff suppressed because one or more lines are too long
@@ -600,7 +600,7 @@ const ViewBucket = ({
|
||||
{
|
||||
type: "delete",
|
||||
onClick: confirmDeleteReplication,
|
||||
hideButtonFunction: () => replicationRules.length <= 1,
|
||||
disableButtonFunction: () => replicationRules.length <= 1,
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
@@ -32,6 +32,13 @@ const styles = () =>
|
||||
spacing: {
|
||||
margin: "0 8px",
|
||||
},
|
||||
buttonDisabled: {
|
||||
"&.MuiButtonBase-root.Mui-disabled": {
|
||||
cursor: "not-allowed",
|
||||
filter: "grayscale(100%)",
|
||||
opacity: "30%",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
interface IActionButton {
|
||||
@@ -42,6 +49,7 @@ interface IActionButton {
|
||||
selected: boolean;
|
||||
sendOnlyId?: boolean;
|
||||
idField: string;
|
||||
disabled: boolean;
|
||||
classes: any;
|
||||
}
|
||||
|
||||
@@ -76,6 +84,7 @@ const TableActionButton = ({
|
||||
selected,
|
||||
to,
|
||||
sendOnlyId = false,
|
||||
disabled = false,
|
||||
classes,
|
||||
}: IActionButton) => {
|
||||
const valueClick = sendOnlyId ? valueToSend[idField] : valueToSend;
|
||||
@@ -88,11 +97,16 @@ const TableActionButton = ({
|
||||
onClick
|
||||
? (e) => {
|
||||
e.stopPropagation();
|
||||
onClick(valueClick);
|
||||
if (!disabled) {
|
||||
onClick(valueClick);
|
||||
} else {
|
||||
e.preventDefault();
|
||||
}
|
||||
}
|
||||
: () => null
|
||||
}
|
||||
className={classes.spacing}
|
||||
className={`${classes.spacing} ${disabled ? classes.buttonDisabled : ""}`}
|
||||
disabled={disabled}
|
||||
>
|
||||
{defineIcon(type, selected)}
|
||||
</IconButton>
|
||||
@@ -103,16 +117,20 @@ const TableActionButton = ({
|
||||
}
|
||||
|
||||
if (isString(to)) {
|
||||
return (
|
||||
<Link
|
||||
to={`${to}/${valueClick}`}
|
||||
onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
}}
|
||||
>
|
||||
{buttonElement}
|
||||
</Link>
|
||||
);
|
||||
if (!disabled) {
|
||||
return (
|
||||
<Link
|
||||
to={`${to}/${valueClick}`}
|
||||
onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
}}
|
||||
>
|
||||
{buttonElement}
|
||||
</Link>
|
||||
);
|
||||
}
|
||||
|
||||
return buttonElement;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@@ -45,7 +45,7 @@ interface ItemActions {
|
||||
type: string;
|
||||
to?: string;
|
||||
sendOnlyId?: boolean;
|
||||
hideButtonFunction?: (itemValue: any) => boolean;
|
||||
disableButtonFunction?: (itemValue: any) => boolean;
|
||||
showLoaderFunction?: (itemValue: any) => boolean;
|
||||
|
||||
onClick?(valueToSend: any): any;
|
||||
@@ -434,9 +434,11 @@ const elementActions = (
|
||||
const vlSend =
|
||||
typeof valueToSend === "string" ? valueToSend : valueToSend[idField];
|
||||
|
||||
if (action.hideButtonFunction) {
|
||||
if (action.hideButtonFunction(vlSend)) {
|
||||
return null;
|
||||
let disabled = false;
|
||||
|
||||
if (action.disableButtonFunction) {
|
||||
if (action.disableButtonFunction(vlSend)) {
|
||||
disabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -465,6 +467,7 @@ const elementActions = (
|
||||
key={`actions-${action.type}-${index.toString()}`}
|
||||
idField={idField}
|
||||
sendOnlyId={!!action.sendOnlyId}
|
||||
disabled={disabled}
|
||||
/>
|
||||
);
|
||||
});
|
||||
|
||||
@@ -176,7 +176,7 @@ const Users = ({ classes, setErrorSnackMessage }: IUsersProps) => {
|
||||
{
|
||||
type: "delete",
|
||||
onClick: deleteAction,
|
||||
hideButtonFunction: (topValue: any) => topValue === userLoggedIn,
|
||||
disableButtonFunction: (topValue: any) => topValue === userLoggedIn,
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user