Search code examples
javascriptreactjsmaterial-uimaterial-table

Hide/Unhide actions icons based on state.vallue value reactjs


I want to hide the approved/disapproved button if the data.STATUS is equal to APPROVED in MaterialTable.

const [data, setData] = useState([
{ID: 1, STATUS: "APPROVED"},
{ID: 2, STATUS: "FOR APPROVAL"},
{ID: 3, STATUS: "REJECTED"},
]);

<MaterialTable 
                icons={tableIcons}
                columns={columns}
                data={data}
                title="List of Advisory"
                style={{
                    overflowX: 'auto'
                }}
actions={[
 {
                        icon: tableIcons.Edit,
                        tooltip: 'Edit Advisory',
                        onClick: (event, rowData) => selectedAdvisory(rowData, 'Edit')
                    },
{
                icon: tableIcons.Delete,
                tooltip: 'Delete Advisory',
                onClick: (event, rowData) => selectedAdvisory(rowData, 'Delete')
              },
                    {
                        icon: tableIcons.ThumbsUpDownIcon,
                        tooltip: 'Approved/Disapproved Advisory',
                        onClick: (event, rowData) => selectedAdvisory(rowData, 'ApproveDisapprove')
                    },

{
                icon: tableIcons.PageviewIcon,
                tooltip: 'Preview',
                onClick: (event, rowData) => alert('You are about to view' + rowData.ADVISORYID)
              }

]}
                localization={{
                    header:{actions:'Actions'}
                }}
            />

I want to hide the Approved/Disapproved icon on action column if the STATUS is APPROVED. Thank you in advance

Material UI: https://material-ui.com/components/tables/ Material table: https://www.npmjs.com/package/material-table https://material-table.com/#/docs/get-started


Solution

  • Add/Put the action icons/buttons in columns property.

    { title: 'Actions', sorting: false, render: rowData =>
    <Link to={`#`}
    onClick={dosomething}
    style={{display: rowData.state==='approved' ? 'none' : 'block'}}
    onClick={dosomething}
    <Approveicon>
    </Link> }
    

    so the actions per column can be controlled